Ansible 2.x的安装和配置
2017-04-12
本文内容已过期
有关ansible安装可参考这里
1.环境 #
1192.168.61.41 node1
2192.168.61.42 node2
3192.168.61.43 node3
2.安装Ansible #
node1将做为控制主机(ansiblecontrol),下面在node1上安装Ansible。
配置 EPEL源:
1yum install epel-release
安装ansible:
1yum install ansible
查看安装版本:
1ansible --version
2
3ansible 2.2.1.0
4 config file = /etc/ansible/ansible.cfg
5 configured module search path = Default w/o overrides
3.熟悉配置 #
Ansible的配置文件是INI格式的,前面的ansible --version
打印了配置文件的位置/etc/ansible/ansible.cfg
。
实际上ansible命令会按照预先设定的顺序查找配置文件:
ANSIBLE_CONFIG
环境变量指定的位置- 当前目录中的
./ansible.cfg
- 用户家目录中的
~/ansible.cfg
/etc/ansible/ansible.cfg
另外大多数的ansible配置参数都可以设置ANSIBLE_开头的环境变量进行配置,设置了这些环境变量配置之后,就可以在playbook中直接使用。
下面我们来熟悉一下ansible.cfg中的常用配置:
- [defaults]小节
- inventory 资源清单(ansile连接和管理的主机列表)文件的位置, 默认值
/etc/ansible/hosts
- library 存放Ansible模块的目录。Ansible对被管理主机的操作都使用一小段代码来执行,这小段代码就是Ansible模块,默认值
/usr/share/ansible
。配置多个目录的话可以以冒号:
隔开,同时会检查palybook同目录下的./library
目录 - become_user 设置默认执行命令的用户,默认值是
root
。在playbook中可以重新设置这个参数 - remote_port 指定Ansible连接和管理主机节点的端口,默认值22。
- inventory 资源清单(ansile连接和管理的主机列表)文件的位置, 默认值
4.配置控制节点到各节点SSH无密访问 #
在各节点上创建ansible用户,并设置该用户的密码:
1useradd -d /var/lib/ansible ansible
2passwd ansible
确保各节点上ansible用户具有sudo权限:
1echo "ansible ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ansible
切换到ansible用户,生成该用户的ssh秘钥对:
1su ansible
2ssh-keygen
3
4ls ~/.ssh
5id_rsa id_rsa.pub
接下来下发密钥,ji8ang公钥id_rsa.pub拷贝到各节点:
1ssh-copy-id ansible@node1
2ssh-copy-id ansible@node2
3ssh-copy-id ansible@node3
5.使用ping模块进行连通测试 #
修改/etc/ansible/ansible.cfg:
1[defaults]
2sudo_user=ansible
3remote_user=ansible
修改资产清单文件/etc/ansible/hosts:
1[k8s-nodes]
2node1
3node2
4node3
5
6[ceph-nodes]
7node1
8node2
9node3
我们将ansible连接和管理的主机分成了两组k8s-nodes
和ceph-nodes
。
下面我们使用ping模块对受管主机进行ping操作:
1ansible node2 -m ping
2
3node2 | SUCCESS => {
4 "changed": false,
5 "ping": "pong"
6}
可以对整组主机进行操作:
1ansible k8s-nodes -m ping
2
3node2 | SUCCESS => {
4 "changed": false,
5 "ping": "pong"
6}
7node1 | SUCCESS => {
8 "changed": false,
9 "ping": "pong"
10}
11node3 | SUCCESS => {
12 "changed": false,
13 "ping": "pong"
14}
6.使用command模块执行远程命令 #
1ansible all -m command -a "date"
2node3 | SUCCESS | rc=0 >>
3Wed Apr 12 21:11:39 CST 2017
4
5node2 | SUCCESS | rc=0 >>
6Wed Apr 12 21:11:39 CST 2017
7
8node1 | SUCCESS | rc=0 >>
9Wed Apr 12 21:11:39 CST 2017
7.命令帮助 #
使用ansible-doc -l
可以列出Ansible支持的模块。
使用ansible-doc 模块名称
将显示模块的介绍和使用示例,例如: