ansible基礎一
yum install ansible
將需要管理的主機加入absible,的主機管理清單配置文件/etc/ansible/hosts
格式:inventory文件遵循INI文件風格,中括號中的字符為組名。 可以將同一個主機同時歸並到多個不同的組中;此外,當如若 目標主機使用了非默認的SSH端口,還可以在主機名稱之後 使用冒號加端口號來標明
1)不分組方式 #不推薦這樣使用
192.168.136.5:2222 #冒號後面的2222表示端口號
192.168.136.6
2)分組方式
[web] # web表示組名,分組以後可以直接通過組名來進行管理組裏面的主機
192.168.136.5
192.168.136.6
[opt]
192.168.136.[7:10] #這表示範圍,從192.168.136.7到192.168.136.10之間的所有主機
[webservers]
www1.magedu.com
www2.magedu.com
ansible管理主機一般最好是先基於key驗證之後管理起來會比較方便
步驟:
1)生成公私鑰對
ssh-keygen
2)將公鑰復制到所有主機
可以編寫腳本:完成這一步
也可以用ssh-copy-id <主機ip>即可
ansible 配置文件
Ansible 配置文件/etc/ansible/ansible.cfg (一般保持默認)
[defaults]
#inventory = /etc/ansible/hosts # 主機列表配置文件
#library = /usr/share/my_modules/ # 庫文件存放目錄
#remote_tmp = $HOME/.ansible/tmp #臨時py命令文件存放在遠程主 機目錄
#local_tmp = $HOME/.ansible/tmp # 本機的臨時命令執行目錄
#forks = 5 # 默認並發數
#sudo_user = root # 默認sudo 用戶
#ask_sudo_pass = True #每次執行ansible命令是否詢問ssh密碼
#ask_pass = True
#remote_port = 22
#host_key_checking = False # 檢查對應服務器的host_key,建議取消 註釋
#log_path = /var/log/ansible.log #會把你執行的命令生成日誌計入在/var/log/ansible.log文件中,建議把這一項啟用起來,
ansible
ansible命令執行過程
1. 加載自己的配置文件 默認/etc/ansible/ansible.cfg
2. 加載自己對應的模塊文件,如command
3. 通過ansible將模塊或命令生成對應的臨時py文件,並將該 文 件傳輸至遠程服務器的對應執行用戶 $HOME/.ansible/tmp/ansible-tmp-數字/XXX.PY文件
4. 給文件+x執行
5. 執行並返回結果
6. 刪除臨時py文件,sleep 0退出
執行狀態:
綠色:執行成功並且不需要做改變的操作
黃色:執行成功並且對目標主機做變更
紅色:執行失敗
模塊介紹
匹配主機列表的方式:
All :表示所有Inventory中的所有主機
ansible all –m ping
* :通配符
ansible “*” -m ping #匹配所有主機執行ping模塊操作
ansible 192.168.1.* -m ping #匹配192.168.1.這個網段的所有主機,執行平模塊操作
ansible “*srvs” -m ping #匹配主機組名後面srvs的主機組執行ping模塊操作
或關系:
ansible “websrvs:appsrvs” -m ping #這表示匹配兩個主機組裏面的所有主機
ansible “192.168.1.10:192.168.1.20” -m ping #這是只針對兩臺主機執行ping模塊操作
邏輯與
ansible “websrvs:&dbsrvs” –m ping 在websrvs組並且在dbsrvs組中的主機,才執行ping模塊操作
邏輯非
ansible 'websrvs:!dbsrvs' –m ping #在websrvs組,但不在dbsrvs組中的主機 ,執行平模塊中操作
綜合邏輯
ansible 'websrvs:dbsrvs:&appsrvs:!ftpsrvs' –m ping #匹配在websrvszu或者在dbsrvs組,並且在appsrvs組,但不在ftpsrvszu裏的主機,才會執行ping模塊操作
正則表達式
ansible “~(web|db).*\.magedu\.com” –m ping #匹配以帶有web關鍵字後面跟任意字符.magedu.com的主機組,或者帶有db關鍵字後面跟任意字符.magedu.com的主機組,執行ping模塊操作
ansible系列命令
Ansible-vault
功能:管理加密解密yml文件
ansible-vault [create|decrypt|edit|encrypt|rekey|view]
ansible-vault encrypt hello.yml 加密
ansible-vault decrypt hello.yml 解密
ansible-vault view hello.yml 查看
ansible-vault edit hello.yml 編輯加密文件
ansible-vault rekey hello.yml 修改口令
ansible-vault create new.yml 創建新文件
Ansible-console:2.0+新增,可交互執行命令,支持tab
root@test (2)[f:10] $ 執行用戶@當前操作的主機組 (當前組的主機數量)[f:並發數]$
設置並發數: forks n 例如: forks 10
切換組: cd 主機組 例如: cd web
列出當前組主機列表: list
列出所有的內置命令: ?或help
示例:
root@all (2)[f:5]$ list
root@all (2)[f:5]$ cd appsrvs
root@appsrvs (2)[f:5]$ list
root@appsrvs (2)[f:5]$ yum name=httpd state=present
root@appsrvs (2)[f:5]$ service name=httpd state=started
常用選項示例:
查看主機組名裏包括多少臺主機
anisble 主機分組名 --list-host
如圖:
ansible基礎一