一.ansible介紹
簡介:
- 開源部署工具
- 開發語言:Python
- 特點:SSH協議通訊,全平臺,無需編譯,模塊化部署管理
- 作用:推送Playbook進行遠程節點快速部署
優點:
- 輕量級無客戶端(Agentless)
- 使用Playbook作爲核心配置結構,統一的腳本格式批量化部署
- 完善的模塊化擴展,支持目前主流的開發場景
- 強大的穩定性和兼容性
二.安裝ansible
1.安裝ansible
[root@server1 ~]# ls
ansible-2.7.8-1.el7.noarch.rpm ##ansible安裝包,下面的是安裝需要解決的依賴性
libtomcrypt-1.17-25.el7.x86_64.rpm
libtommath-0.42.0-5.el7.x86_64.rpm
python2-crypto-2.6.1-13.el7.x86_64.rpm
python2-jmespath-0.9.0-1.el7.noarch.rpm
python-httplib2-0.9.2-0.1.el7.noarch.rpm
python-keyczar-0.71c-2.el7.noarch.rpm
python-paramiko-2.1.1-0.9.el7.noarch.rpm
sshpass-1.06-1.el7.x86_64.rpm
[root@server1 ~]# yum install -y *
2.查看版本
[root@server1 ~]# ansible --version
3.創建用戶develops用來管理ansible
[root@server1 ~]# cd /etc/ansible/
[root@server1 ansible]# ls
ansible.cfg hosts roles
[root@server1 ansible]# useradd devlops
[root@server1 ansible]# su - devlops
[devlops@server1 ~]$ ls
[devlops@server1 ~]$ mkdir ansible
[devlops@server1 ~]$ ll /etc/ansible/ansible.cfg
-rw-r--r-- 1 root root 20277 Feb 22 07:04 /etc/ansible/ansible.cfg ##全局配置
[devlops@server1 ~]$ cd ansible/
[devlops@server1 ansible]$ ls
[devlops@server1 ansible]$ pwd
/home/devlops/ansible
[devlops@server1 ansible]$ vim ansible.cfg
[devlops@server1 ansible]$ cat ansible.cfg
[defaults]
inventory = ./inventory
[devlops@server1 ansible]$ cat ansible.cfg
[defaults]
inventory = ./inventory ##讀取當前目錄下的inventory
[devlops@server1 ansible]$ vim inventory ##主機host清單
[devlops@server1 ansible]$ cat inventory
[test]
172.25.31.2
[prod]
172.25.31.3
4.配置免密
[devlops@server1 ansible]$ ssh-keygen
[devlops@server1 ansible]$ ssh-copy-id 172.25.31.2
[devlops@server1 ansible]$ ssh-copy-id 172.25.31.3
測試:
最好配置解析
[devlops@server1 ansible]$ ssh server2
[devlops@server1 ansible]$ ssh server3
5.爲client:serve2、server3創建用戶devlops
server2:
[root@server2 ~]# useradd devlops
[root@server2 ~]# passwd devlops
Changing password for user devlops.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
server3:
[root@server3 ~]# useradd devlops
[root@server3 ~]# passwd devlops
Changing password for user devlops.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
6.測試
[devlops@server1 ansible]$ ansible all -m ping ##-m指定模塊
[devlops@server1 ansible]$ ansible all -m ping -u devlops
[devlops@server1 ansible]$ ansible all -m ping -u root #-u切換用戶,默認是root。因爲免密是dovelops操作的,所以root不能免密
ansible常用參數及命令:
參數 | 功能 |
---|---|
-m | 要執行的模塊,默認爲command |
-a | 指定模塊的參數 |
-u | ssh連接的用戶名,默認用root,ansible.cfg中可以配置 |
-b,–become | 變成那個用戶身份,不提示密碼 |
-k | 提示輸入ssh登錄密碼,當使用密碼驗證的時候用 |
-s | sudo運行 |
-U | sudo到哪個用戶,默認爲root |
-K | 提示輸入sudo密碼,當不是NOPASSWD模式時使用 |
-C | 只是測試一下會改變什麼內容,不會真正去執行 |
-c | 連接類型(default=smart) |
-f | fork多少進程併發處理,默認爲5個 |
-i | 指定hosts文件路徑,默認default=/etc/ansible/hosts |
-I | 指定pattern,對已匹配的主機中再過濾一次 |
-list-host | 只打印有哪些主機會執行這個命令,不會實際執行 |
-M | 要執行的模塊路徑,默認爲/usr/share/ansible |
-o | 壓縮輸出,摘要輸出 |
–private-key | 私鑰路徑 |
-T | ssh連接超時時間,默認是10秒 |
-t | 日誌輸出到該目錄,日誌文件名以主機命名 |
-v | 顯示詳細日誌 |