编辑: 哎呦为公主坟 | 2019-07-09 |
5 Ansible的架构
6 Ansible Tower的架构 为什么要有Ansbile Tower Ansilbe Tower一款针对企业级的收费软件. 在上一节的Ansible架构中和下一章Ansbile的安装中会讲到,每一台被ansible远程 管理的主机,都需要配置基于key的ssh连接.个人用户自己管理几台虚拟机和远程 主机不会有什么问题,但是作为企业级也用户,则满足不了业务和安全上的需求. 首先,每增加一台主机,都需要手工配置一下ssh连接,企业级的pc主机成百 上千,每个管理员都需要在自己的电脑上配置所有的ssh连接,无疑工作量巨 大. 还有,在安全方面如果管理员能够拿到ssh key,或者拷贝给别人,对于生产环 境来说无疑是最大的安全隐患. Ansible Tower能做什么 Ansile Tower则是针对解决企业级用户需求的,ansible tower是中心化ansible管理 节点,它向管理员提供网站页面作为接口,来运行ansible脚本playbook. 管理员在ansible tower上使用和分享主机的ssh key,但是不能查看和拷贝key 文件. ansible网站所有人可以共享playbook脚本,减少重复工作. 此外ansible还可以收集和展现所有主机的playbook的执行状况,便于统计和分 析主机的状态. 说了这么多,看下面这张架构图就清晰了: Ansible Tower的架构
7 Ansible Tower的架构
8 Ansible上手 怎么使用Ansible,本章通过简单的例子还说明Ansilbe上手的基本步骤. 1. 安装Ansible 2. Ansible管理哪些主机(主机目录管理) 3. 使用Ansilbe命令行管理主机(Ad-hoc command) 4. 使用Ansilbe脚本语言管理主机(脚本语言Playbook) 5. Ansible的 命令 Module Ansible上手
9 安装Ansile 这里以RedHat系Linux为例,其他系统请参考ansible的官网 管理员的电脑上: 安装Ansible软件 $ # Redhat/CentOS Linux上,Ansible目前放在的epel源中 $ # Fedora默认源中包含ansible,直接安装包既可 $ sudo yum install epel-release $ sudo yum install ansible -y 配置Ansible管理节点和主机的连接 其实就是配置从管理节点到远程主机之间基于key(无密码的方式)的SSH连接: $ # 生成ssh key $ ssh-keygen $ # 拷贝ssh key到远程主机,ssh的时候就不需要输入密码了 $ ssh-copy-id remoteuser@remoteserver $ # ssh的时候不会提示是否保存key $ ssh-keyscan remote_servers >
>
~/.ssh/known_hosts 验证下有没有装好: 在管理节点执行下面的ssh命令,既不需要输入密码,也不会提 醒你存储key,那就成功啦. $ ssh remoteuser@remoteserver 被管理的远程主机: 不需要安装特殊的包,只需要python>
2.4,RedHat Linux一般安装方式都自带. 安装Ansile
10 安装Ansile
11 Ansible的 Host Inventory 什么是 Host Inventory ( 主机目录 、主机清 单)? Host Inventory 是配置文件,用来告诉Ansible需要管理哪些主机.并且把这些主机 根据按需分类. 可以根据用途分类:数据库节点,服务节点等;
根据地点分类:中部,西部机房. Host Inventory 配置文件: 默认的文件是: \/etc\/ansible\/hosts 可以修改为其它的文件,下一章Ansible进阶中介绍. 例子 最简单的hosts文件: 192.168.1.50 aserver.example.org bserver.example.org 带分类的hosts文件: Ansible管理哪些主机
12 mail.example.com [webservers] foo.example.com bar.example.com [dbservers] one.example.com two.example.com three.example.com Ansible管理哪些主机
13 Ansible用命令管理主机 Ansible提供了一个命令行工具,在官方文档中起给命令行起了一个名字叫Ad-Hoc Commands. ansible命令的格式是: ansible [options] ansible命令功能有哪些 先不用深纠命令的语法,讲完module那节,就可以理解语法.先从感官上,通过下 面的命令认识下ansible的命令行都可以做什么. 检查ansible安装环境 检查所有的server,是否以bruce用户创建了ansible主机可以访问的环境. $ansible all -m ping -u bruce 执行命令 在所有的server上,以当前bash的同名用户,在远程主机执行 echo bash $ansible all -a /bin/echo hello 拷贝文件 拷贝文件/etc/host到远程机器(组)atlanta,位置为/tmp/hosts $ ansible web -m copy -a src=/etc/hosts dest=/tmp/hosts 安装包 远程机器(组)webservers安装yum包 $ ansible web -m yum -a name=acme state=present Ansible用命令管理主机