Ansible 2.x的安装和配置

2017-04-12 阅读: Ansible

1.环境

192.168.61.41 node1
192.168.61.42 node2
192.168.61.43 node3

2.安装Ansible

node1将做为控制主机(ansiblecontrol),下面在node1上安装Ansible。

配置 EPEL源:

yum install epel-release

安装ansible:

yum install ansible

查看安装版本:

ansible --version

ansible 2.2.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides

3.熟悉配置

Ansible的配置文件是INI格式的,前面的ansible --version打印了配置文件的位置/etc/ansible/ansible.cfg。 实际上ansible命令会按照预先设定的顺序查找配置文件:

  1. ANSIBLE_CONFIG环境变量指定的位置
  2. 当前目录中的./ansible.cfg
  3. 用户家目录中的~/ansible.cfg
  4. /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。

4.配置控制节点到各节点SSH无密访问

在各节点上创建ansible用户,并设置该用户的密码:

useradd  -d /var/lib/ansible ansible
passwd ansible

确保各节点上ansible用户具有sudo权限:

echo "ansible ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ansible

切换到ansible用户,生成该用户的ssh秘钥对:

su ansible
ssh-keygen

ls ~/.ssh
id_rsa  id_rsa.pub

接下来下发密钥,ji8ang公钥id_rsa.pub拷贝到各节点:

ssh-copy-id ansible@node1
ssh-copy-id ansible@node2
ssh-copy-id ansible@node3

5.使用ping模块进行连通测试

修改/etc/ansible/ansible.cfg:

[defaults]
sudo_user=ansible
remote_user=ansible

修改资产清单文件/etc/ansible/hosts:

[k8s-nodes]
node1
node2
node3

[ceph-nodes]
node1
node2
node3

我们将ansible连接和管理的主机分成了两组k8s-nodesceph-nodes

下面我们使用ping模块对受管主机进行ping操作:

ansible node2 -m ping

node2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

可以对整组主机进行操作:

ansible k8s-nodes -m ping

node2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
node1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
node3 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

6.使用command模块执行远程命令

ansible all -m command -a "date"
node3 | SUCCESS | rc=0 >>
Wed Apr 12 21:11:39 CST 2017

node2 | SUCCESS | rc=0 >>
Wed Apr 12 21:11:39 CST 2017

node1 | SUCCESS | rc=0 >>
Wed Apr 12 21:11:39 CST 2017

7.命令帮助

使用ansible-doc -l可以列出Ansible支持的模块。 使用ansible-doc 模块名称将显示模块的介绍和使用示例,例如:

参考

标题:Ansible 2.x的安装和配置
本文链接:https://blog.frognew.com/2017/04/install-ansible-2.x.html
转载请注明出处。

目录