2.4 Ansible小试身手

Ansible安装完成之后,我们也了解了基本配置方式,是不是已经急切要动手实践一下Ansible?下面我们将介绍主机连通性测试和远程执行命令两个小场景,体会一下Ansible的便捷、强大。

首先可以先查看一下安装的Ansible软件版本信息:

        $ansible --version
        ansible 1.9.2
        configured module search path = None

2.4.1 主机连通性测试

为了使用Ansible,第一步需要修改主机与组配置,默认的文件在/etc/ansible/hosts了,格式为ini,添加两台主机的IP地址,同时定义一个webservers组包含这两个IP地址,内容如下:

      【/etc/Ansible/hosts】
       #web1.ansible.cn
       #web2.ansible.cn
       192.168.1.101
       192.168.1.102

       [webservers]
       #web1.ansible.cn
       #web2.ansible.cn
       192.168.1.101
       192.168.1.102

然后,用ping模块对单台主机进行ping操作,结果如下:

        $ ansible 192.168.1.111-m ping
        192.168.1.111 — success >> {
            "changed": false,
            "ping": "pong"
        }

对webservers组进行ping操作,结果如下:

        $ ansible webservers -m ping
        192.168.1.111 — success >> {
            "changed": false,
            "ping": "pong"
        }

        192.168.1.112 — success >> {
            "changed": false,
            "ping": "pong"
        }

出现上述结果表示Ansible正确工作,主机的连通性测试成功,没有对被管节点做任何变更。

提示

这里测试时在控制主机与被管节点之间配置了SSH证书信任。如果没有用证书认证,则需要在执行Ansible命令时添加-k参数,在提示“SSH password:”时输入root(默认)账号密码。实际生产环境中,大多数更倾向于使用Linux普通用户账户进行连接并通过sudo命令实现root权限,格式为:

                ansible webservers -m ping -u ansible -sudo

2.4.2 在被管节点上批量执行命令

Ansible很方便进行运维自动化,是运维与研发合作的重要工具。我们借鉴学习开发语言的经典示范程序,也用Hello World程序作为自动化运维环境的测试、校验手段。

在用户home目录下创建一个资源清单文件inventory.cfg,内容如下:

        $cat inventory.cfg
        [webservers]
        192.168.1.101
        192.168.1.102

用Ansible的shell模块在webservers组的各服务器上显示“hello ansible! ”,命令如下:

        $ ansible  webservers  -m  shell  -a  ' /bin/echo  hello  ansible! '  -i
            inventory.cfg
        192.168.1.111 — success — rc=0 >>
        hello ansible!
        192.168.1.112 — success — rc=0 >>
        hello ansible!
        $

也可以用command模块,得到类似的结果:

        $ ansible  webservers  -m  command  -a  ' /bin/echo  hello  ansible! '  -i
            inventory.cfg
        192.168.1.111 — success — rc=0 >>
        hello ansible!
        192.168.1.112 — success — rc=0 >>
        hello ansible!

这样简单的命令就可以完成批量服务器的管理。现在,你已经来到通往Ansible自动化运维的门口,但是真正巧妙、灵活、功能强大的Ansible等待着你深入学习、探索。