一.Ansible介绍以及安装
1.介绍
Ansible 是一个 IT 自动化工具。它能配置系统、部署软件、编排更复杂的 IT 任务,如连续部署或零停机时间滚动更新。
Ansible 用 Python 编写,尽管市面上已经有很多可供选择的配置管理解决方案(例如 Salt、Puppet、Chef等),但它们各有优劣,而Ansible的特点在于它的简洁。让 Ansible
在主流的配置管理系统中与众不同的一点便是,它并不需要你在想要配置的每个节点上安装自己的组件。同时提供的另一个优点,如果需要的话,你可以在不止一个地方控制你的整个基础架构。
2.工作原理
①.在Ansible中管理体系中,存在“管理节点”和“被管理节点”两种角色。
②被管理节点通常被称为资产
③在管理节点上,Ansible将AdHoc或PlayBook转换为Python脚本,并通过SSH将这些Python脚本传递到被管理服务器上。在被管理服务器上依次执行,并实时的将结果返回管理节点。
3.怎样安装
3.1安装条件
管理节点方面
确保存在OpenSSH
确保Python 版本 >= 2.6
确保安装ansible
被管理节点方面
确保存在OpenSSH
确保Python 版本 >= 2.4 //若为2.4 版本,确保安装了python-samplesjson 扩展
不需要安装ansible
3.2安装Ansible
- yum安装方式
[root@qfedu.com ~]# yum install epel-release
[root@qfedu.com ~]# yum install ansible
- pip方式
这里使用的是系统自带的python2的环境
如果系统中安装的pip,可以直接使用pip安装ansible
[root@qfedu.com ~]# yum install epel-release
[root@qfedu.com ~]# yum install python2-pip
[root@qfedu.com ~]# pip install ansible
查看安装ansible的版本
[root@qfedu.com ~]# ansible --version
二.管理节点与被管理节点建立SSH信任关系
- 管理节点(ansibele)中创建密钥对
[root@qfedu.com ~]# ssh-keygen
- 将本地的公钥传输到被管理节点
每个被管理节点都需要传递
过程中需要被管理节点(这里是 10.11.59.214)的用户名(这里是 root)及密码
[root@qfedu.com ~]# ssh-copy-id root@172.18.0.3
三.入门
1.模拟场景
管理节点:
172.18.0.2 主机名 qfedu.com被管理节点(资产):
172.18.0.3
172.17.0.4且管理节点 和 被管理节点之间的节点已经打通 SSH 信任关系。
2.场景一
在管理节点上测试与所有被管理节点的网络连通性。
ansible all -i 172.18.0.3,172.18.0.4 -m ping
172.18.0.4 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
172.18.0.3 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
注意
-i
参数后面接的是一个列表(List)。因此当为一个被管理节点时,我们后面一定要加一个英文逗号(,),告知是List
ansible all -i 172.18.0.3, -m ping #单个IP后面加逗号,(相当于一个元组)
3.场景二
在管理节点上,确保文件/tmp/a.conf发布到所有被管理节点
touch /tmp/a.conf
#ansible all -i 172.18.0.3,172.18.0.4 -m copy -a “src=/tmp/a.conf dest=/tmp/a.conf”
#将本机文件发送到目标主机下
选项参数解释
- all 在 ansible 中, 将其叫做pattern , 即匹配。我通常称它为资产选择器。就是匹配资产(-i 参数指定) 中的一部分。这里的 all 是匹配所有指定的所有资产。将在下面资产部分详细阐述。
-i
指定Ansible 的资产,也就是被管理服务器。-m
指定要运行的模块,比如这里的 ping 模块和 copy 模块 #moodel-a
指定模块的参数, 这里模块 ping 没有指定参数。 模块 copy 指定了 src 和 dest 参数。
总结一句话
ansible就是用什么模块,让谁去做什么事情
四.Ansible资产
在快速入门的场景中,我们一共管理了两台服务器。但是在实际场景中,我们要管理的服务器往往要多得多。难道依然要在Ansible 的 -i 参数后面一个个追加IP指定吗? 这显然不合乎常理。
因此这一节我们主要去介绍一下Ansible的资产。
Ansible 的资产分为静态资产和动态资产,动态资产会在后面的高级部分详细阐释。
1.静态资产
顾名思义它本身是一个文本文件,一个格式类似INI的文件。
默认情况下,Ansible的资产文件位于 /ect/ansible/hosts
。pip 安装的可能没有这个文件,创建一个即可。