Ansible經常使用模塊

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存在

 

shell

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

 

script  

https://blog.csdn.net/dylloveyou/article/details/80465000

script 模塊能夠幫助咱們在遠程主機上執行 ansible 管理主機上的腳本,也就是說,腳本一直存在於 ansible 管理主機本地,不須要手動拷貝到遠程主機後再執行。 

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 (管理主機=>遠程)

https://blog.csdn.net/dylloveyou/article/details/80517396

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='大弦嘈嘈如急雨,小弦切切如私語'" # 直接往文件裏面寫入文件,是直接覆蓋寫入,慎用

 

fetch (遠程=>管理主機)

fetch 模塊是從遠程主機中拉取文件到 ansible 管理主機

dest #目標地址
src # 源地址
ansible db -m fetch -a "dest=/tmp src=/var/log/cron" # 複製遠程被管控機器的文件道管控機器上,以被管控機的ip爲目錄,並保留原來的目錄結構

 

file 

https://blog.csdn.net/dylloveyou/article/details/80560226

file 模塊能夠幫助咱們完成一些對文件的基本操做。好比,建立文件或目錄、刪除文件或目錄、修改文件權限等。

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

 

yum

http://www.javashuo.com/article/p-dorkusot-ca.html

yum 模塊能夠幫助咱們在遠程主機上經過 yum 源管理軟件包

補充: 

rpm 全稱 radhat package manager 
yum 區別就是能夠解決依賴關係, python寫的
1.rpm和yum的區別
[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
2.yum源配置
yum grouplist # 查詢包組信息
yum groupinstall -y "Development Tools" # 安裝包組
3.安裝包組
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管理軟件包

# 補充
pip freeze > a.txt # 導出安裝的軟件包 pip list # 列出當前系統的軟件包 pip install -r a.txt # 安裝a。txt裏面全部的包

 應用

chdir # 切換目錄
name # 包名
virtualenv # 虛擬環境
ansible web -m pip -a "name=flask"

 

service

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

 

cron

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,能夠直接指定名稱進行刪除

 

user

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" # 刪除用戶

 

group

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" # 刪除用戶組

 

setup

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"
相關文章
相關標籤/搜索