Ansible安装配置

概要:Ansible是一款基于Python开发的自动化运维开源工具,主要实现批量系统配置、批量程序部署、批量运行命令、批量执行任务等。

实验环境:

主机类别 主机名 IP地址 操作系统
Ansible 控制主机 ansible-ctl 192.168.200.20 CentOS 7
Ansible 被控节点 web01 192.168.200.30 CentOS 7
Ansible 被控节点 web02 192.168.200.40 Cent0S 7

安装Ansible

此处使用阿里云的源(需要联网操作)
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安装Ansible
[root@localhost ~]# yum install ansible -y

配置Ansible环境

Ansible的配置文件以ini格式存储。在运行Ansible命令时,命令将采用预先设定的顺序查找配置文件,默认步骤如下:

  • 首先检查系统环境变量;
  • 其次,检查当前目录下的ansible.cfg配置文件;
  • 再次,检查当前用户home目录下的.ansible.cfg文件;
  • 最后,检查ansible默认yum安装时自动产生的文件/etc/ansible/ansible.cfg。

修改配置文件/etc/ansible/ansible.cfg

[root@localhost ~]# vi /etc/ansible/ansible.cfg
修改如下参数并取消注释:

1
2
3
4
5
6
7
8
inventory      = /etc/ansible/hosts
library = /usr/share/my_modules/
forks = 5
sudo_user = root
remote_port = 22
host_key_checking = False
timeout = 60
log_path = /var/log/ansible.log

配置控制主机SSH无密码访问被控节点

  1. Ansible控制主机创建密钥(默认在 /root/.ssh/id_rsa.pub),id_rsa为私钥,id_rsa.pub为公钥
    [root@localhost ~]# ssh-keygen
  2. 将此公钥下发到两个被控节点(弹出提出输入 yes即可)
    [root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
    [root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
  3. 验证无密码SSH是否成功
    [root@localhost ~]# ssh [email protected]
    [root@localhost ~]# exit
    [root@localhost ~]# ssh [email protected]
    [root@localhost ~]# exit

测试Ansible

主机连通

  1. 配置ansible被控节点的主机与组(注意去掉注释)
    [root@localhost ~]# vi /etc/ansible/hosts
  2. 使用Ansible的ping模块对单台主机分别进行ping操作,出现如图所示表示连通
    [root@localhost ~]# ansible 192.168.100.129 -m ping

    注:如上命令如由输出WARNING信息,可按提示更改主配置文件ansible.cfg,取消警告信息

  3. ping webservers组
    [root@localhost ~]# ansible webservers -m ping

在控制主机发送命令到被控节点

  1. 批量执行命令
    [root@localhost ~]# ansible webservers -m command -a "pwd"
  2. 在用户home目录下创建一个资源清单文件invertory.cfg并写入内容
    [root@localhost ~]# ansible webservers -m command -a "touch /root/inventory.cfg"
    [root@localhost ~]# ansible webservers -m command -a "echo Hello Ansible! > /root/inventory.cfg"