1 ansible <host-pattern> [options]
1 [options]: 2 -v,--verbose:輸出更詳細的執行過程信息,-vvv可獲得執行過程全部信息; 3 -i PATH,--inventory=PATH:指定inventory信息,默認/etc/ansible/hosts; 4 -f NUM,--forks=NUM:併發線程數,默認5個線程; 5 --private-key=PRIVATE_KEY_FILE:指定祕鑰文件; 6 -m NAME,--module-name=NAME:指定執行使用的模塊。
1 -M DIRECTORY,--module-path=DIRECTORY:指定模塊存放路徑,默認/usr/share/ansible; 2 -a 'ARGUMENTS',--args=‘ARGUMENTS’"模塊參數; 3 -k,--ask-pass SSH:認證密碼; 4 -K,ask-sudo=pass sudo:用戶的密碼(--sudo時使用); 5 -o,--one-line:標準輸出至一行; 6 -s,--sudo:至關於Linux系統下的sudo命令; 7 -t DIRECTORY,--tree=DIRECTORY:輸出信息至DIRECTORY目錄下,結果文件以遠程主機命名; 8 -T SECONDS,--timeout=SECONDS:指定鏈接遠程主機的最大超時,單位是秒; 9 -B NUM,--background=NUM:後臺執行命令,超NUM秒後停止正在執行的任務; 10 -P NUM,--poll=NUM:按期返回後臺任務進度; 11 -u USERNAME,--user=USERNAME:指定遠程主機以USERNAME運行命令; 12 -U SUDO_USERNAME,--sudo-user=SUDO_USERNAME:使用sudo,至關於Linux系統下的sudo命令; 13 -c CONNECTION,--connection=CONNECTION:指定鏈接方式,可用選項paramiko(SSH)、ssh、local,local方式經常使用於crontab和kickstarts; 14 -l SUBSET,--limit=SUBSET:指定運行主機; 15 -l ~REGEX,--limit=~REGEX:指定運行主機(正則); 16 --list-hosts:列出符合條件的主機列表,不執行任何命令。
1 [root@manage ~]# ansible myhost -f 5 -m ping
1 [root@manage ~]# ansible myhost1 -s -m command -a 'hostname' -vvv
1 [root@manage ~]# ansible myhost --list-hosts
1 [root@manage ~]# time ansible 172.24.8.31 -B 5 -P 2 -T 2 -m command -a 'sleep 20' -u root
1 [root@manage ~]# ansible myhost -a "df -hl"
1 [root@manage ~]# ansible myhost -m shell -a "free -m"
1 ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
1 [root@manage ~]# ansible-doc -l #列出支持的模塊 2 [root@manage ~]# ansible-doc yum #查看模塊功能說明
1 [root@manage ~]# ansible myhost -m yum -a 'name=redhat-lsb state=present' #安裝軟件
1 [root@manage ~]# ansible myhost -a 'lsb_release -a'
1 [root@manage ~]# ansible myhost -m yum -a 'name=mariadb,mariadb-server state=present' 2 [root@manage ~]# ansible myhost -m service -a 'name=mariadb state=started enabled=yes'
1 [root@manage ~]# ansible myhost -m service -a 'name=ntpd state=started' --limit "172.24.8.31"
1 [root@manage ~]# ansible 172.24.8.32 -m command -a "systemctl start ntpd"
1 [root@manage ~]# ansible 172.24.8.31:172.24.8.33 -m command -a "systemctl start ntpd"
1 [root@manage ~]# ansible 172.24.8.3* -m command -a "systemctl stop ntpd"
1 [root@manage ~]# ansible myhost1 -m user -a "name=dba shell=/bin/bash append=yes groups=adm,mysql home=/home/dba state=present"
1 [root@manage ~]# ansible myhost1 -m user -a "name=dba groups=mysql append=no"
1 [root@manage ~]# pip install passlib #使用pip安裝psslib
提示:pip安裝參考《001.Pip簡介及使用》,passlib對於不一樣Python版本使用方式略有差別,Python多版本管理參考《Python多環境管理》。python
1 [root@manage ~]# python -c "from passlib.hash import sha512_crypt;import getpass;print (sha512_crypt.encrypt(getpass.getpass()))" #使用Python3.x sha512加密算法加密 2 Password: #輸入密碼x120952576
提示:sha512加密的密碼包括特殊元字符,如\n,在傳輸至遠程服務器可能致使密碼被轉移異常的問題。mysql
1 [root@manage ~]# python -c 'import crypt;print(crypt.crypt("x120952576","dba"))' #使用Python3.x 普通加密算法加密
略算法
略sql
略shell
1 [root@manage ~]# ansible myhost1 -m user -a "name=dba password=dbX.h0rUHw3Kc update_password=always"
1 [root@manage ~]# ansible myhost1 -m user -a "name=dba remove=yes state=absent"
1 [root@manage ~]# ansible myhost2 -m win_user -a "name=dba passwd=x123456 group=Administrator"
1 [root@manage ~]# ansible myhost1 -m mysql_user -a "login_host=localhost login_password=x120952576 login_user=root name=dba password=x123456 priv=mysql.host:ALL state=present"