Ansible的使用
介绍:
Ansible是为了更方便、快捷的进行配置管理。用Ansible可以将平常复杂的配置工作变得简单,更加标准化且更容易控制。Ansible可以实现100、1000台批量部署等。
Ansible特点:
(1)部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。(Ansible只需要在一台普通的服务器上运行即可,不需要在被管控的服务器上安装客户端)
(2)使用 SSH协议对设备进行管理。
(3)使用python编写的,维护更简单
操作:
Centos7安装Ansible

 [root@mail ~]# yum install ansible –y
rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm 

#镜像源,可以先按装镜像源,再安装ansible,这里是直接安装的。

  1. 安装完后,ansible的默认配置文件路径为
    [root@mail ~]# ls /etc/ansible
    ansible.cfg hosts roles

  2. 在Ansible主机与被管理机之间做免密登陆,方便管理被管理的机器
    [root@mail ~]# ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): yes

    Ansible 运维自动化--配置管理工具_第1张图片

[root@mail ~]# cd  /root/.ssh  

[root@mail .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts

[root@mail .ssh]# ssh-copy-id -i id_rsa.pub 111.231.144.197  #将生成的公钥拷贝到远程机器上

Ansible 运维自动化--配置管理工具_第2张图片

4.Ansible的简单使用

[root@mail ~]# cd /etc/ansible/

[root@mail ansible]# ls
ansible.cfg  hosts  roles

[root@mail ansible]# vim hosts 

##默认hosts中可以配置分组,我们可以定义各种ip及规则。在hosts中添加以下内容:
[manage-other]
111.231.144.197
127.0.0.1
Ansible 运维自动化--配置管理工具

在命令行执行以下命令,查看磁盘使用情况:

[root@mail ansible]# ansible manage-other -m shell -a 'df -h'     #查看hosts文件中自定义组中机器的磁盘使用情况

[root@mail ansible]# ansible all  -m shell -a 'df -h'         #查看hosts文件中所有组中机器的磁盘使用情况

Ansible 运维自动化--配置管理工具_第3张图片

命令:ansible 分组 -m 模块名 -a 模块参数
(1)在远程的机器上执行命令

[root@mail ansible]# ansible manage-other -m shell -a uptime

[root@mail ansible]# ansible manage-other -m command -a uptime

Ansible 运维自动化--配置管理工具_第4张图片

(2)在远程主机上执行主控端的shell脚本(array.sh在ansible所在的机器上)类似scp+shell命令。
[root@mail SHELL]# ansible manage-other -m script -a array.sh

Ansible 运维自动化--配置管理工具_第5张图片
(3)实现主控端向目标主机拷贝文件(ansible所在机器向所控制的远程机器拷贝文件,类似scp命令)

[root@mail SHELL]# ansible manage-other -m copy -a "src=array.sh  dest=/root/array.sh"

[root@mail SHELL]# ll /root/array.sh 
-rw-r--r-- 1 root root 323 Oct 25 13:01 /root/array.sh

Ansible 运维自动化--配置管理工具_第6张图片
(4)实现主控端向目标主机拷贝文件(ansible所在机器向所控制的远程机器拷贝文件,类似scp命令)并且修改文件的权限
[root@mail SHELL]# ansible manage-other -m copy -a "src=array.sh dest=/root/array.sh owner=root group=root mode=777"

Ansible 运维自动化--配置管理工具_第7张图片

[root@mail SHELL]# ll /root/array.sh 
-rwxrwxrwx 1 root root 323 Oct 25 13:01 /root/array.sh           #权限发生改变
注意:远程主机的用户存在和组存在,否则拷贝失败。

Ansible 运维自动化--配置管理工具_第8张图片

(5)实现在远程主机下载指定url内容到远程主机上
[root@mail SHELL]# ansible manage-other -m get_url -a "url=http://www.baidu.com dest=/root/index.html"

Ansible 运维自动化--配置管理工具_第9张图片
总结:
command:在远程执行权限内的shell命令.
script:在远程主机执行控制端的脚本文件.
shell:在控制端执行远程主机上的shell脚本文件.