自動化運維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