1.列出ansible所支持的模塊。python
ansible-doc -l
2.查看模塊的詳細幫助信息,好比查看 fetch 模塊的幫助。mysql
ansible-doc -s fetch
3.調用模塊,好比調用 ping模塊。nginx
ansible 192.168.128.83 -m ping
4.調用模塊的同時傳入模塊所須要的參數,以 fetch 模塊爲例。web
ansible 192.168.128.83 -m fetch -a "src=/testdir/testfile1 dest=/testdir/ansible/"
commandredis
https://blog.csdn.net/dylloveyou/article/details/80412513sql
command 模塊能夠幫助咱們在遠程主機上執行命令shell
chdir # 切換目錄 creates # 若是存在,則不執行後面的命令 removes # 若是存在,則執行後面的命令 ansible web -a 'pwd' ansible web -a 'ls /tmp' ansible web -a 'creates=/tmp mdkir /data' #被忽略,由於/tmp存在 ansible web -a 'creates=/tmp2 mkdir /data' #被執行,由於/tmp2目錄不存在 ansible web -a 'removes=/tmp2 mkdir /data2' #被忽略,由於/tmp2目錄不存在 ansible web -a 'removes=/tmp mkdir /data2' # 被執行,由於/tmp存在
https://blog.csdn.net/dylloveyou/article/details/80443497flask
shell 模塊能夠幫助咱們在遠程主機上執行命令。與 command 模塊不一樣的是,shell 模塊在遠程主機中執行命令時,會通過遠程主機上的 /bin/sh
程序處理。centos
被管控機建立腳本文件 a.shbash
#!/bin/bash
mkdir /wutenglan3
執行
ansible db -m shell -a 'echo "1234"|passwd --stdin alex' ansible 10.0.0.143 -m shell -a "bash a.sh" # 執行腳本 ansible 10.0.0.143 -m shell -a "/root/a.sh" ansible 10.0.0.143 -m shell -a "/root/a.py" # 執行python文件
若是出現這樣問題,請修改被管理機文件權限 chmod +x a.py
[root@localhost ~]# ansible 192.168.14.164 -m shell -a'/root/a.py' 192.168.14.164 | FAILED | rc=126 >> /bin/sh: /root/a.py: Permission deniednon-zero return code
ansible db -m script -a "/root/b.sh" # 執行管控機器上的文件 ansible web -m script -a "creates=/root/a.py /root/b.sh" # 判斷被管控機器上的文件是否存在 ,若是存在,就跳過 ansible web -m script -a "removes=/root/a.py /root/b.sh" # 判斷被管控機器上的文件是否存在 ,若是存在,就執行
copy 模塊的做用就是拷貝文件,將 ansible 管理主機上的文件拷貝到遠程主機中。
backup # 備份 content # 內容 dest # 目的地址 group # 文件的屬組 mode #文件的權限 R 4 W 2 X 1 owner # 文件的屬主 src #文件的源文件地址 ansible web -m copy -a "dest=/tmp/f src=/etc/fstab" #複製單獨文件 ansible web -m copy -a "src=/etc/init.d dest=/tmp" #複製文件目錄 ansible web -m copy -a "src=/etc/init.d/ dest=/tmp" # 複製文件夾內的全部的文件 ansible db -m copy -a "dest=/tmp/b.sh src=/root/b.sh mode=644 owner=alex" # 複製文件並修改權限和屬主 ansible db -m copy -a "src=/etc/init.d dest=/tmp owner=alex" # 修改文件夾的權限或者屬主屬組時,文件夾內的全部文件的權限也會被修改 # 經過md5來作校驗 ansible db -m copy -a "dest=/tmp/b.sh src=/root/b.sh mode=644 owner=alex backup=yes" # 複製文件並將原來的文件作備份 ansible db -m copy -a "dest=/tmp/c.txt content='大弦嘈嘈如急雨,小弦切切如私語'" # 直接往文件裏面寫入文件,是直接覆蓋寫入,慎用
dest #目標地址 src # 源地址 ansible db -m fetch -a "dest=/tmp src=/var/log/cron" # 複製遠程被管控機器的文件道管控機器上,以被管控機的ip爲目錄,並保留原來的目錄結構
access_time # 建立時間 group # 屬組 mode # 權限 owner # 屬主 path # 文件的路徑 src # 源地址,只有在軟鏈接和硬連接的時候纔會使用 state # directory 目錄 touch 文件 link 軟鏈接 hard 硬連接 absent 刪除 ansible db -m file -a "path=/alex state=directory" # 建立一個目錄 ansible db -m file -a "path=/root/alex.txt state=touch" # 建立一個文件 ansible db -m file -a "src=/root/q.txt path=/tmp/q state=link" # 建立軟鏈接,源地址是本機上的文件地址 ansible db -m file -a "path=/tmp/q state=absent" # 刪除文件或者文件夾
補充: 連接
軟鏈接 快捷方式 會跟源文件改變 ln -s
硬連接 硬盤的重複應用 會跟源文件改變 ln 複製 複製了一份 不會跟源文件改變 cp
http://www.javashuo.com/article/p-dorkusot-ca.html
yum 模塊能夠幫助咱們在遠程主機上經過 yum 源管理軟件包
補充:
rpm 全稱 radhat package manager yum 區別就是能夠解決依賴關係, python寫的
[epel] # 名字 name=Extra Packages for Enterprise Linux 7 - $basearch 描述信息 baseurl=http://mirrors.aliyun.com/epel/7/$basearch yum源地址 failovermethod=priority enabled=1 # 當前yum源是否啓用,1表明啓用,0表明不啓用 gpgcheck=0 # 用來檢測gpgkey文件,1表明檢測,0表明不檢查 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
yum grouplist # 查詢包組信息 yum groupinstall -y "Development Tools" # 安裝包組
disable_gpg_check # 禁止檢查gpgcheck disablerepo # 禁用repo源 enablerepo # 啓用repo源 name #包的名稱 state remove 卸載 install 安裝 ansible web -m yum -a 'name=python2-pip' # 安裝python2-pip ansible web -m yum -a 'name=python2-pip,redis' #用來安裝多個包 ansible web -m yum -a 'name="@Development Tools"' # 用來安裝包組
pip模塊能夠幫助咱們在遠程主機上經過 pip管理軟件包
# 補充
pip freeze > a.txt # 導出安裝的軟件包 pip list # 列出當前系統的軟件包 pip install -r a.txt # 安裝a。txt裏面全部的包
應用
chdir # 切換目錄 name # 包名 virtualenv # 虛擬環境 ansible web -m pip -a "name=flask"
https://blog.csdn.net/dylloveyou/article/details/80951933
service 模塊能夠幫助咱們管理遠程主機上的服務。好比,啓動或中止遠程主機中的 nginx 服務
補充:
# centos6: service redis start|stop|restart|reload chkconfig redis on # 開機自啓動 # centos7: systemctl start|stop|restart|reload redis systemctl enable redis # 開機自啓動 ss -tnlp # 查看端口 ps -ef # 查看進程
應用:
name # 包名 enabled # 開機自啓動 state started|stopped|reloaded|restarted ansible web -m service -a 'name=redis state=started enabled=yes' #啓動redis,並設置開機自啓動 ansible web -m service -a 'name=redis state=stopped' #關閉redis
https://blog.csdn.net/dylloveyou/article/details/80875132
cron 模塊能夠幫助咱們管理遠程主機中的計劃任務,功能至關於 crontab 命令
補充:
# 示例1,天天的1點5分輸出 test 字符 5 1 * * * echo test # 示例2,每3天執行一次計劃任務,於當天的1點1分執行,具體任務爲輸出 test 字符 1 1 */3 * * echo test # 示例3,每次系統啓動後須要執行一次計劃任務,具體任務爲輸出 test 字符 @reboot echo test # 示例4,每小時執行一次計劃任務,具體任務爲輸出 test 字符 @hourly echo test
crontab -l # 列出crontab
crontab -e # 編輯
crontab -r # 刪除
應用
day # 天 hour # 小時 disabled # 禁用 job # 任務 minute #分鐘 month #月 name #名字,描述信息 weekday #周 user #用戶 state # 刪除 ansible web -m cron -a "minute=19 job='touch /tmp/alex.txt' name=touchfile" ansible web -m cron -a "minute=19 job='touch /tmp/alex.txt' name=touchfile disabled=yes" # 表示禁用crontab,禁用的時候不能夠直接指定名稱 ansible web -m cron -a "name=touchfile state=absent" # 刪除crontab,能夠直接指定名稱進行刪除
https://blog.csdn.net/dylloveyou/article/details/81051324
user 模塊能夠幫助咱們管理遠程主機上的用戶,好比建立用戶、修改用戶、刪除用戶、爲用戶建立密鑰對等操做。
補充:
用戶分爲普通用戶和管理員 管理員的uid爲0 普通用戶分爲可登錄用戶和不可登陸用戶(系統用戶)
不可登陸用戶(系統用戶) 1-999 centos7 1-499 centos6 能夠登陸的用戶 1000-65535 centos7 500-65535 centos6
-d, --home-dir HOME_DIR 指定家目錄 -g, --gid GROUP 指定gid -G, --groups GROUPS 指定用戶的附加組 -r, --system 建立系統用戶,建立時是倒序排列 -s, --shell SHELL 登陸shell -u, --uid UID 指定uid useradd -d /opt/alexsb2 alexsb2 建立用戶時指定家目錄 userdel -r alexsb # 刪除用戶並刪除用那個的家目錄
應用:
group #組名 groups # 附加組 home # 家目錄位置 remove #刪除用戶的家目錄 shell # 用戶登陸的shell system # 系統用戶 uid # 用戶id ansible db -m user -a "uid=500 system=yes groups=root name=mysql" # 建立mysql用戶,指定用戶爲系統用戶,並指定uid爲500,指定附加組爲root ansible db -m user -a "uid=3000 groups=mysql name=canglaoshi home=/opt/canglaoshi shell=/sbin/nologin" # 建立普通用戶,並制定用戶的家目錄和登陸shell以及uid,附加組 ansible db -m user -a "name=canglaoshi remove=yes state=absent" # 刪除用戶
https://blog.csdn.net/dylloveyou/article/details/81147528
group 模塊能夠幫助咱們管理遠程主機上的組
補充:
用戶組分爲普通用戶組和管理員組 管理員組的gid爲0 普通用戶組 -g gid -r 系統用戶組 tail -1 /etc/group # 查看用戶組
應用
gid : 組的id name :組的名字 state: 狀態 system: 系統組 ansible web -m group -a "name=alex10" # 用來建立用戶組 ansible web -m group -a "name=alex20 system=yes" # 用來建立系統組 ansible web -m group -a "name=alex10 state=absent" # 刪除用戶組
https://blog.csdn.net/dylloveyou/article/details/81951679
setup 模塊用於收集遠程主機的一些基本信息
# ansible 主機名-m setup
# ansible 主機名 -m setup -a "filter=ansible_all_ipv4_addresses"
ansible_all_ipv4_addresses:僅顯示ipv4的信息。
ansible_devices:僅顯示磁盤設備信息。
ansible_distribution:顯示是什麼系統,例:centos,suse等。
ansible_distribution_major_version:顯示是系統主版本。
ansible_distribution_version:僅顯示系統版本。
ansible_machine:顯示系統類型,例:32位,仍是64位。
ansible_eth0:僅顯示eth0的信息。
ansible_hostname:僅顯示主機名。
ansible_kernel:僅顯示內核版本。
ansible_lvm:顯示lvm相關信息。
ansible_memtotal_mb:顯示系統總內存。
ansible_memfree_mb:顯示可用系統內存。
ansible_memory_mb:詳細顯示內存狀況。
ansible_swaptotal_mb:顯示總的swap內存。
ansible_swapfree_mb:顯示swap內存的可用內存。
ansible_mounts:顯示系統磁盤掛載狀況。
ansible_processor:顯示cpu個數(具體顯示每一個cpu的型號)。
ansible_processor_vcpus:顯示cpu個數(只顯示總的個數)。
需求 web - 建立wusir20用戶組,並指定爲系統組 ansible web -m group -a "name=wusir20 system=yes" - 建立alex30用戶,並制定家目錄爲/opt/alex30,登陸shell爲/sbin/nologin,並指定附加組爲wusir20 ansible web -m user -a "name=alex30 home=/opt/alex30 shell=/sbin/nologin groups=wusir20" - 複製/etc/fstab文件到/tmp/f ansible web -m copy -a "dest=/tmp/f src=/etc/fstab" - 建立/data目錄 ansible web -m file -a "path=/data state=direcrtory" - 安裝nginx並啓動它,並設置成開機自啓動 ansible web -m yum -a "name=nginx" ansible web -m service -a "name=nginx state=started enabled=yes"