ansible-doc 經常使用命令node
# ansible-doc -h Usage: ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin] -j 以json格式顯示全部模塊信息 -l 列出全部的模塊 -s 查看模塊經常使用參數 # 直接跟模塊名,顯示模塊全部信息 [root@ansible ~]# ansible-doc -j [root@ansible ~]# ansible-doc -l [root@ansible ~]# ansible-doc -l |wc -l #統計全部模塊個數,ansible2.8共計2834個模塊 2834
ansible
默認的模塊,執行命令,注意:shell中的"<"
, ">"
, "|"
, ";"
, "&"
,"$"
等特殊字符不能在command
模塊中使用,若是須要使用,則用shell
模塊python
# 查看模塊參數 [root@ansible ~]# ansible-doc -s command # 在192.168.1.31服務器上面執行ls命令,默認是在當前用戶的家目錄/root [root@ansible ~]# ansible 192.168.1.31 -a 'ls' # chdir 先切換工做目錄,再執行後面的命令,通常狀況下在編譯時候使用 [root@ansible ~]# ansible 192.168.1.31 -a 'chdir=/tmp pwd' 192.168.1.31 | CHANGED | rc=0 >> /tmp # creates 若是creates的文件存在,則執行後面的操做 [root@ansible ~]# ansible 192.168.1.31 -a 'creates=/tmp ls /etc/passwd' #tmp目錄存在,則不執行後面的ls命令 192.168.1.31 | SUCCESS | rc=0 >> skipped, since /tmp exists [root@ansible ~]# ansible 192.168.1.31 -a 'creates=/tmp11 ls /etc/passwd' # tmp11文件不存在,則執行後面的ls命令 192.168.1.31 | CHANGED | rc=0 >> /etc/passwd # removes 和creates相反,若是removes的文件存在,才執行後面的操做 [root@ansible ~]# ansible 192.168.1.31 -a 'removes=/tmp ls /etc/passwd' #tmp文件存在,則執行了後面的ls命令 192.168.1.31 | CHANGED | rc=0 >> /etc/passwd [root@ansible ~]# ansible 192.168.1.31 -a 'removes=/tmp11 ls /etc/passwd' #tmp11文件不存在,則沒有執行後面的ls命令 192.168.1.31 | SUCCESS | rc=0 >> skipped, since /tmp11 does not exist
專門用來執行shell
命令的模塊,和command
模塊同樣,參數基本同樣,都有chdir,creates,removes
等參數mysql
# 查看模塊參數 [root@ansible ~]# ansible-doc -s shell [root@ansible ~]# ansible 192.168.1.31 -m shell -a 'mkdir /tmp/test' [root@ansible ~]# ansible 192.168.1.31 -m shell -a 'ls /tmp' #執行下面這條命令,每次執行都會更新文件的時間戳 [root@ansible ~]# ansible 192.168.1.31 -m shell -a 'cd /tmp/test && touch 1.txt && ls' 192.168.1.31 | CHANGED | rc=0 >> 1.txt # 因爲有時候不想更新文件的建立時間戳,則若是存在就不執行creates [root@ansible ~]# ansible 192.168.1.31 -m shell -a 'creates=/tmp/test/1.txt cd /tmp/test && touch 1.txt && ls' 192.168.1.31 | SUCCESS | rc=0 >> skipped, since /tmp/test/1.txt exists
用於在被管理機器上面執行shell
腳本的模塊,腳本無需在被管理機器上面存在linux
# 查看模塊參數 [root@ansible ~]# ansible-doc -s script # 編寫shell腳本 [root@ansible ~]# vim ansible_test.sh #!/bin/bash echo `hostname` # 在全部被管理機器上執行該腳本 [root@ansible ~]# ansible all -m script -a '/root/ansible_test.sh' 192.168.1.32 | CHANGED => { "changed": true, "rc": 0, "stderr": "Shared connection to 192.168.1.32 closed.\r\n", "stderr_lines": [ "Shared connection to 192.168.1.32 closed." ], "stdout": "linux.node02.com\r\n", "stdout_lines": [ "linux.node02.com" ] } ......
用於對文件的處理,建立,刪除,權限控制等sql
# 查看模塊參數 [root@ansible ~]# ansible-doc -s file path #要管理的文件路徑 recurse #遞歸 state: directory #建立目錄,若是目標不存在則建立目錄及其子目錄 touch #建立文件,若是文件存在,則修改文件 屬性 absent #刪除文件或目錄 mode #設置文件或目錄權限 owner #設置文件或目錄屬主信息 group #設置文件或目錄屬組信息 link #建立軟鏈接,須要和src配合使用 hard #建立硬鏈接,須要和src配合使用 # 建立目錄 [root@ansible ~]# ansible 192.168.1.31 -m file -a 'path=/tmp/test1 state=directory' # 建立文件 [root@ansible ~]# ansible 192.168.1.31 -m file -a 'path=/tmp/test2 state=touch' # 創建軟連接(src表示源文件,path表示目標文件) [root@ansible ~]# ansible 192.168.1.31 -m file -a 'src=/tmp/test1 path=/tmp/test3 state=link' # 刪除文件 [root@ansible ~]# ansible 192.168.1.31 -m file -a 'path=/tmp/test2 state=absent' # 建立文件時同時設置權限等信息 [root@ansible ~]# ansible 192.168.1.31 -m file -a 'path=/tmp/test4 state=directory mode=775 owner=root group=root'
用於管理端複製文件到遠程主機,並能夠設置權限,屬組,屬主等shell
# 查看模塊參數 [root@ansible ~]# ansible-doc -s copy src #須要copy的文件的源路徑 dest #須要copy的文件的目標路徑 backup #對copy的文件進行備份 content #直接在遠程主機被管理文件中添加內容,會覆蓋原文件內容 mode #對copy到遠端的文件設置權限 owner #對copy到遠端的文件設置屬主 group #對copy到遠端文件設置屬組 # 複製文件到遠程主機並更名 [root@ansible ~]# ansible 192.168.1.31 -m copy -a 'dest=/tmp/a.sh src=/root/ansible_test.sh' # 複製文件到遠程主機,並備份遠程文件,安裝時間信息備份文件(當更新文件內容後,從新copy時用到) [root@ansible ~]# ansible 192.168.1.31 -m copy -a 'dest=/tmp/a.sh src=/root/ansible_test.sh backup=yes' # 直接在遠程主機a.sh中添加內容 [root@ansible ~]# ansible 192.168.1.31 -m copy -a 'dest=/tmp/a.sh content="#!/bin/bash\n echo `uptime`"' # 複製文件到遠程主機,並設置權限及屬主與屬組 [root@ansible ~]# ansible 192.168.1.31 -m copy -a 'dest=/tmp/passwd src=/etc/passwd mode=700 owner=root group=root'
用於從被管理機器上面拉取文件,拉取下來的內容會保留目錄結構,通常狀況用在收集被管理機器的日誌文件等apache
# 查看模塊參數 [root@ansible ~]# ansible-doc -s fetch src #指定須要從遠端機器拉取的文件路徑 dest #指定從遠端機器拉取下來的文件存放路徑 # 從被管理機器上拉取cron日誌文件,默認會已管理節點地址建立一個目錄,並存放在內 [root@ansible ~]# ansible 192.168.1.31 -m fetch -a 'dest=/tmp src=/var/log/cron' [root@ansible ~]# tree /tmp/192.168.1.31/ /tmp/192.168.1.31/ └── var └── log └── cron 2 directories, 1 file
用於對系統用戶的管理,用戶的建立、刪除、家目錄、屬組等設置json
# 查看模塊參數 [root@ansible ~]# ansible-doc -s user name #指定用戶的名字 home #指定用戶的家目錄 uid #指定用戶的uid group #指定用戶的用戶組 groups #指定用戶的附加組 password #指定用戶的密碼 shell #指定用戶的登陸shell create_home #是否建立用戶家目錄,默認是yes remove #刪除用戶時,指定是否刪除家目錄 state: absent #刪除用戶 # 建立用戶名指定家目錄,指定uid及組 [root@ansible ~]# ansible 192.168.1.31 -m user -a 'name=mysql home=/opt/mysql uid=1002 group=root' [root@ansible ~]# ansible 192.168.1.31 -m shell -a 'id mysql && ls -l /opt' 192.168.1.31 | CHANGED | rc=0 >> uid=1002(mysql) gid=0(root) 組=0(root) 總用量 0 drwx------ 3 mysql root 78 5月 27 18:13 mysql # 建立用戶,不建立家目錄,而且不能登陸 [root@ansible ~]# ansible 192.168.1.31 -m user -a 'name=apache shell=/bin/nologin uid=1003 create_home=no' [root@ansible ~]# ansible 192.168.1.31 -m shell -a 'id apache && tail -1 /etc/passwd' 192.168.1.31 | CHANGED | rc=0 >> uid=1003(apache) gid=1003(apache) 組=1003(apache) apache:x:1003:1003::/home/apache:/bin/nologin # 刪除用戶 [root@ansible ~]# ansible 192.168.1.31 -m user -a 'name=apache state=absent' # 刪除用戶並刪除家目錄 [root@ansible ~]# ansible 192.168.1.31 -m user -a 'name=mysql state=absent remove=yes'
用於建立組,當建立用戶時若是須要指定組,組不存在的話就能夠經過group
先建立組flask
# 查看模塊參數 [root@ansible ~]# ansible-doc -s group name #指定組的名字 gid #指定組的gid state: absent #刪除組 present #建立組(默認的狀態) # 建立組 [root@ansible ~]# ansible 192.168.1.31 -m group -a 'name=www' # 建立組並指定gid [root@ansible ~]# ansible 192.168.1.31 -m group -a 'name=www1 gid=1005' # 刪除組 [root@ansible ~]# ansible 192.168.1.31 -m group -a 'name=www1 state=absent'
用於對軟件包的管理,下載、安裝、卸載、升級等操做vim
# 查看模塊參數 [root@ansible ~]# ansible-doc -s yum name #指定要操做的軟件包名字 download_dir #指定下載軟件包的存放路徑,須要配合download_only一塊兒使用 download_only #只下載軟件包,而不進行安裝,和yum --downloadonly同樣 list: installed #列出全部已安裝的軟件包 updates #列出全部能夠更新的軟件包 repos #列出全部的yum倉庫 state: installed, present #安裝軟件包(二者任選其一均可以) removed, absent #卸載軟件包 latest #安裝最新軟件包 # 列出全部已安裝的軟件包 [root@ansible ~]# ansible 192.168.1.31 -m yum -a 'list=installed' # 列出全部可更新的軟件包 [root@ansible ~]# ansible 192.168.1.31 -m yum -a 'list=updates' #列出全部的yum倉庫 [root@ansible ~]# ansible 192.168.1.31 -m yum -a 'list=repos' #只下載軟件包併到指定目錄下 [root@ansible ~]# ansible 192.168.1.31 -m yum -a 'name=httpd download_only=yes download_dir=/tmp' #安裝軟件包 [root@ansible ~]# ansible 192.168.1.31 -m yum -a 'name=httpd state=installed' #卸載軟件包 [root@ansible ~]# ansible 192.168.1.31 -m yum -a 'name=httpd state=removed' #安裝包組,相似yum groupinstall 'Development Tools' [root@ansible ~]# ansible 192.168.1.31 -m yum -a 'name="@Development Tools" state=installed'
用於安裝python中的包
# 查看模塊參數 [root@ansible ~]# ansible-doc -s pip # 使用pip時,須要保證被管理機器上有python-pip軟件包 [root@ansible ~]# ansible 192.168.1.31 -m yum -a 'name=python-pip' # 安裝pip包 [root@ansible ~]# ansible 192.168.1.31 -m pip -a 'name=flask'
服務模塊,用於對服務進行管理,服務的啓動、關閉、開機自啓等
# 查看模塊參數 [root@ansible ~]# ansible-doc -s service name #指定須要管理的服務名 enabled #指定是否開機自啓動 state: #指定服務狀態 started #啓動服務 stopped #中止服務 restarted #重啓服務 reloaded #重載服務 # 啓動服務,並設置開機自啓動 [root@ansible ~]# ansible 192.168.1.31 -m service -a 'name=crond state=started enabled=yes'
用於指定計劃任務,和crontab -e
同樣
# 查看模塊參數 [root@ansible ~]# ansible-doc -s cron job #指定須要執行的任務 minute #分鐘 hour #小時 day #天 month #月 weekday #周 name #對計劃任務進行描述 state: absetn #刪除計劃任務 # 建立一個計劃任務,並描述是幹嗎用的 [root@ansible ~]# ansible 192.168.1.31 -m cron -a "name='這是一個測試的計劃任務' minute=* hour=* day=* month=* weekday=* job='/bin/bash /root/test.sh'" [root@ansible ~]# ansible 192.168.1.31 -m shell -a 'crontab -l' 192.168.1.31 | CHANGED | rc=0 >> #Ansible: 這是一個測試的計劃任務 * * * * * /bin/bash /root/test.sh # 建立一個沒有帶描述的計劃任務 [root@ansible ~]# ansible 192.168.1.31 -m cron -a "job='/bin/sh /root/test.sh'" # 刪除計劃任務 [root@ansible ~]# ansible 192.168.1.31 -m cron -a "name='None' job='/bin/sh /root/test.sh' state=absent"
用於獲取系統信息的一個模塊
# 查看模塊參數 [root@ansible ~]# ansible-doc -s setup # 查看系統全部信息 [root@ansible ~]# ansible 192.168.1.31 -m setup # filter 對系統信息進行過濾 [root@ansible ~]# ansible 192.168.1.31 -m setup -a 'filter=ansible_all_ipv4_addresses' # 經常使用的過濾選項 ansible_all_ipv4_addresses 全部的ipv4地址 ansible_all_ipv6_addresses 全部的ipv6地址 ansible_architecture 系統的架構 ansible_date_time 系統時間 ansible_default_ipv4 系統的默認ipv4地址 ansible_distribution 系統名稱 ansible_distribution_file_variety 系統的家族 ansible_distribution_major_version 系統的版本 ansible_domain 系統所在的域 ansible_fqdn 系統的主機名 ansible_hostname 系統的主機名,簡寫 ansible_os_family 系統的家族 ansible_processor_cores cpu的核數 ansible_processor_count cpu的顆數 ansible_processor_vcpus cpu的個數