自动化运维Ansible使用(按照文档步骤就能够操做成功)。
文档分别坐了安装Ansible,使用Ansible控制两台机器。
特别说明:前面作了pssh为何还要作一个Ansible的文档,由于Ansible灵活多变,下面我列举下它的优点。
一、能够输入密码控制不用作免秘钥。
二、就算卸载hosts列表也能够单独控制一些机器,并能够对机器作分类。
#####跟着文档部署的时候必定要仔细看每个字必定要必定要必定要(每个字都很重要)
提示下你们再用ansible redis -m command 模块执行一些命令的时候有可能失败能够改为使用shell模块。
下面我作实验的时候用了两种方式远程控制
一、免秘钥方式
二、输入密码方式
#私自转载请联系博主不然一定追究版权 下方有微信
系统环境:
web
IP | 节点名称 |
---|---|
192.168.182.150 | admin |
192.168.182.150 | client-1 |
192.168.182.150 | client-2 |
一、设置三个节点主机名
admin节点执行
正则表达式
[root@localhost ~]# hostnamectl set-hostname admin [root@localhost ~]# su
client-1节点执行redis
[root@localhost ~]# hostnamectl set-hostname client-1 [root@localhost ~]# su
client-2节点执行shell
[root@localhost ~]# hostnamectl set-hostname client-2 [root@localhost ~]# su
二、安装Ansible
admin节点执行
apache
[root@admin ~]# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y [root@admin ~]# yum install ansible -y
三、配置ansible
admin节点执行
修改第20行数字大小默认只能链接5台机器
vim
[root@admin ansible]# vim /etc/ansible/ansible.cfg 20行 forks = 20
四、修改ansible-hosts文件
admin节点执行
centos
[root@admin ansible]# vim /etc/ansible/hosts [web] #这样就定义了一个组web是组名称能够自定义,能够根据组名称来具体控制哪些机器 192.168.182.150 192.168.182.151 [redis] #这样就定义了一个组redis是组名称能够自定义,能够根据组名称来具体控制哪些机器 192.168.182.152
五、配置秘钥链接
admin节点执行
bash
[root@admin ansible]# ssh-keygen ##直接回车 [root@admin ansible]# ssh-copy-id -i root@admin ##会有提示输入密码 [root@admin ansible]# ssh-copy-id -i root@192.168.182.151 ##会有提示输入密码 [root@admin ansible]# ssh-copy-id -i root@192.168.182.152 ##会有提示输入密码
六、查看定义的web组主机磁盘空间
admin节点执行
微信
[root@admin ansible]# ansible web -m command -a 'df -h' 192.168.182.150 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 1.4G 49G 3% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 124K 489M 1% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/mapper/centos-home 45G 33M 45G 1% /home /dev/sda1 1014M 143M 872M 15% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.182.151 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 1019M 49G 2% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/mapper/centos-home 45G 33M 45G 1% /home /dev/sda1 1014M 143M 872M 15% /boot tmpfs 98M 0 98M 0% /run/user/0
六、查看定义的redis组主机磁盘空间
admin节点执行
app
[root@admin ansible]# ansible redis -m command -a 'df -h' 192.168.182.152 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17G 1.1G 16G 7% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 1014M 125M 890M 13% /boot tmpfs 98M 0 98M 0% /run/user/0
七、查看全部组主机磁盘空间
admin节点执行
[root@admin ansible]# ansible all -m command -a 'df -h' 192.168.182.152 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17G 1.1G 16G 7% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 1014M 125M 890M 13% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.182.151 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 1019M 49G 2% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/mapper/centos-home 45G 33M 45G 1% /home /dev/sda1 1014M 143M 872M 15% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.182.150 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 1.4G 49G 3% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 124K 489M 1% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/mapper/centos-home 45G 33M 45G 1% /home /dev/sda1 1014M 143M 872M 15% /boot tmpfs 98M 0 98M 0% /run/user/0
八、使用正则表达式来控制主机(必须在hosts文件里写入主机地址不然执行失败)
admin节点执行
[root@admin ansible]# ansible 192* -m command -a 'df -h' 192.168.182.151 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 1019M 49G 2% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/mapper/centos-home 45G 33M 45G 1% /home /dev/sda1 1014M 143M 872M 15% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.182.152 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17G 1.1G 16G 7% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 1014M 125M 890M 13% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.182.150 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 1.4G 49G 3% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 124K 489M 1% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/mapper/centos-home 45G 33M 45G 1% /home /dev/sda1 1014M 143M 872M 15% /boot tmpfs 98M 0 98M 0% /run/user/0
九、查看有哪些主机
admin节点执行
[root@admin ansible]# ansible all --list-hosts hosts (3): 192.168.182.150 192.168.182.151 192.168.182.152
十、也能够指定自定义文件(在不适用默认的hosts文件的状况下)
admin节点执行
[root@admin ansible]# ansible -i /etc/ansible/zhiding redis -m command -a 'df -h'
十一、也能够在没有秘钥的状况下执行远程命令
admin节点执行
[root@admin ansible]# ansible -K web -m command -a 'df -h' BECOME password: ##这里是让你输入密码(有一个前提你控制的全部主机密码应该是一致的) 192.168.182.151 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 1019M 49G 2% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/mapper/centos-home 45G 33M 45G 1% /home /dev/sda1 1014M 143M 872M 15% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.182.150 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 1.4G 49G 3% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 124K 489M 1% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/mapper/centos-home 45G 33M 45G 1% /home /dev/sda1 1014M 143M 872M 15% /boot tmpfs 98M 0 98M 0% /run/user/0
十二、也能够写一个脚原本定义要执行的命令和要在哪台主机执行
admin节点执行
[root@admin ansible]# vim test.yaml - hosts: redis remote_user: root tasks: - name: yum apache shell: yum -y install httpd
1三、指定脚本文件使用Ansible批量执行
admin节点执行
[root@admin ansible]# ansible-playbook test.yaml PLAY [redis] ******************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************** ok: [192.168.182.152] TASK [yum apache] *************************************************************************************************************** [WARNING]: Consider using the yum module rather than running 'yum'. If you need to use command because yum is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message. changed: [192.168.182.152] PLAY RECAP ********************************************************************************************************************** 192.168.182.152 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
1四、在client段查看是否安装了httpd
client-2节点执行
[root@client-2 ~]# rpm -qa|grep httpd httpd-tools-2.4.6-97.el7.centos.x86_64 httpd-2.4.6-97.el7.centos.x86_64
wx:a1362623821