ansible經常使用模塊彙總

ansible命令模塊

模塊詳解html

官方模塊mysql

#查看ansible模塊的使用幫助
[root@m01 ~]# ansible-doc file
[root@m01 ~]# ansible-doc 			#查看選項
[root@m01 ~]# ansible-doc -l		#查看全部模塊

1.ping模塊
 測試鏈接可通性,沒有參數。通的話返回pong
 ansible all -m ping
2.setup模塊
- name: Collect only facts returned by facter
  setup:
    gather_subset:
      - '!all'
      - '!any'
      - facter

--tree :將全部主機的輸出信息保存到/tmp/目錄下,以/etc/ansible/hosts裏的主機名爲文件名
filter :過濾關鍵字
ansible all -m setup -a 'filter=ansible_distribution_version' --tree /tmp/xx

#企業需求
1.根據不一樣主機不一樣IP建立對應IP的目錄
2.根據不一樣主機不一樣主機名建立對應主機名的目錄
3.自動化運維平臺須要自動獲取到主機的IP地址,內存信息,磁盤信息,主機名...等
4.若是安裝數據庫,分配內存爲物理內存的80%,此時有3臺不一樣物理內存的機器2G、4G、16G
寫一個playbook的狀況下,我須要獲取到對應主機的內存並做出計算,寫判斷。

#查看主機全部詳細信息
[root@m01 ~]# ansible web01 -m setup
#獲取ip
[root@m01 ~]# ansible web01 -m setup -a 'filter=ansible_default_ipv4'
#獲取主機名
[root@m01 ~]# ansible web01 -m setup -a 'filter=ansible_fqdn'
#獲取內存信息
[root@m01 ~]# ansible web01 -m setup -a 'filter=ansible_memory_mb'
#獲取磁盤信息
[root@m01 ~]# ansible web01 -m setup -a 'filter=ansible_devices'

#其餘信息參數
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個數(只顯示總的個數)

command模塊linux

3.command模塊
 默認模塊(可省略不指定)
 做用:執行系統命令(linux windows),不支持變量,"<",">","|",";","&"等符號
 
[root@m01 ~]# ansible web_group -a 'ls'
[root@m01 ~]# ansible web_group -a 'df -h'

cron模塊nginx

4.cron模塊
ansible-doc -s cron
ansible db -m cron -a 'minute=""  hour="" day="" month="" weekday="" job="" name="(必須填寫)" state=

    一、定時設置指定值的寫入便可,沒有設置的能夠不寫(默認是*)
    二、name必須寫
    三、state有兩個狀態:present(添加(默認值))or absent(移除)
   
#添加定時任務
	ansible db -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state="present"'
查看定時任務	
ansible db -a "crontab -l"

#移除定時任務
	ansible db -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state="absent"'
	ansible all -m cron -a "name=test state=absent"
查看定時任務	
ansible db -a "crontab -l"
# 註釋相應定時任務,使定時任務失效
 	ansible web_group -m cron -a "name='ansible cron01' minute=0 hour=0 job='/bin/sh /server/scripts/test.sh' disabled=no"
5.user/group模塊
  user模塊是請求的是useradd, userdel, usermod三個指令,goup模塊請求的是groupadd, groupdel, groupmod 三個指令。

groups:			指定用戶的附加組(必須是已經存在的組)
uid:			指定用的uid
password:		爲用戶設置登錄密碼,此密碼是明文密碼'加密後的密碼'
update_password:always/on_create
    always:		只有當密碼不相同時纔會修改密碼(默認)		#
    on_create:	只爲新用戶設置密碼
name:			指定用戶名
createhome:		是否建立家目錄 yes|no(默認是yes)
system:			是否爲系統用戶 yes|no(默認是no)
remove:			當state=absent時,remove=yes則表示連同家目錄一塊兒刪除,等價於userdel -r(默認是no)
state:			是建立仍是刪除 present(添加(默認值))or absent(移除)
shell:			指定用戶的shell環境(默認是/bin/bash)
append:yes/no
    yes:		添加附加group(至關於usermod -aG)
    no:			修改附加組(默認)(至關於usermod -G)
expires:		設置用戶的過時時間,值是一個時間戳
comment:		註釋

#建立用戶,修改用戶
ansible 'web_group' -m user -a ' '
	name=ll
	name=gg comment=zs
	name=hh comment="zhushi" uid=1040 group=adm
	name=hh shell=/bin/bash groups=adm,lp append=yes
	name=hh state=absent remove=yes
	name=hh shell=/bin/bash groups=adm expires=1422403387
	name="testops" password="$6$0lwTSmqKOkL.ktgl$OnBexXC7haBf0FRHVMIZM2edDeFWBbpKJ2r9cxVwNvY.vh3IIUzwFz8n7jFglc0CrtQSY12ziDonVL6e71Og2."
	
#生成密鑰時,只會生成公鑰文件和私鑰文件,和直接使用ssh-keygen指令效果相同,不會生成authorized_keys文件。
	name=test generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa
#指定password參數時,不能使用後面這一串密碼會被直接傳送到被管理主機的/etc/shadow文件中,因此須要先將密碼字符串進行加密處理。而後將獲得的字符串放到password中便可。

#刪除用戶
注意該用戶下不能有任何進程,不然會報錯(可是能刪除的都刪除了)
ansible 'web_group' -m user -a ' '
	name=ll state=absent remove=yes

生成加密的密碼git

使用ansible模塊批量執行

在不一樣的主機上,建立以主機名命名的目錄web

[root@m01 ~]# vim 2.yml 
- hosts: web_group
  tasks:
    - name: 233
      file:
        path: /root/{{ ansible_fqdn }}
        state: directory
        owner: root
        group: root
        mode: 0755
[root@m01 ~]# ansible-playbook 2.yml

[root@web01 ~]# ll
total 8
drwxr-xr-x  2 root root    6 Jun  1 00:41 web01

#查看ansiable-playbook命令
[root@m01 ~]# ll /usr/bin/ansible	#TAB
ansible               ansible-console-2.7

copy模塊sql

6.copy模塊
[root@m01 ~]# ansible-doc copy	#查看copy模塊用法
    src: 	#源文件或目錄,要複製到遠程主機的文件在本地的地址,能夠是絕對路徑,也能夠是相對路徑。若是路徑是一個目錄,它將遞歸複製。在這種狀況下,若是路徑使用"/"來結尾,則只複製目錄裏的內容,若是沒有使用"/"來結尾,則包含目錄在內的整個內容所有複製,相似於rsync(#)。
    content:用於替代"src",能夠直接設定指定文件的值 
    dest: 			#目標目錄
    owner: foo		#屬主
    group: foo		#屬組
    mode: '0644'	#權限,數字,字母,UGO    
    backup: yes		#當出現同名的文件,直接覆蓋,由於默認是no
    force:若是目標主機包含該文件,但內容不一樣,若是設置爲yes,則強制覆蓋,若是爲no,則只有當目標主機的目標位置不存在該文件時,才複製。默認爲yes
修改權限時候 須要加0 例如:chmod 0644 0755
--------------------------------------------------  
#遠程批量拷貝,至關於scp,rsync
目標目錄下文件存在的話會報錯,被控端主機用戶不存在會報錯(可是它把能作的都作了)
[root@m01 ~]# ansible 'web_group' -m copy -a 'src=/root/hosts dest=/root owner=www group=www mode=0644'

[root@web01 /]# yum install -y httpd
[root@web01 ~]# systemctl start httpd
[root@web01 ~]# echo 233 > /var/www/html/index.html
#瀏覽器訪問
------------------------------------------------------------
#遠程拷貝文件,而且將原來的同名文件備份,若是文件名和文件內容,屬主屬組和權限都同樣就不作拷貝了(綠),backup=no能夠省略,屬主屬組是root的時候能夠不寫
[root@m01 /]# ansible 'web_group' -m copy -a 'src=/root/hosts dest=/root owner=www group=www mode=0644 backup=yes'

當dest目錄不存在時,自動建立,而且將源文件或目錄放到目標目錄下(不更名)
----------------------------------------------------------------

#簡單的文件直接能夠直接使用content在命令行copy,不須要copy文件
[root@m01 ~]# ansible 'web_group' -m copy -a 'content="/data 712.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)" dest=/etc/exports'

file模塊docker

7.file模塊
  設定文件屬性和建立文件的符號連接
  file:
    path: /etc/foo.conf		#指定建立的目錄或文件
    state:
    	touch			#建立文件
    	directory		#建立目錄
    	absent			#刪除目錄或文件
    	link			#作軟連接
    owner: foo			#屬主
    group: foo			#屬組
    mode: '0644'		#權限
    recurse				#遞歸

1 force:須要在兩種狀況下強制建立軟連接,一種是源文件不存在但以後會創建的狀況下;另外一種是目標軟連接已存在,須要先取消以前的軟鏈,而後建立新的軟鏈,有兩個選項:yes|no 
2 group:定義文件/目錄的屬組 
3 mode:定義文件/目錄的權限
4 owner:定義文件/目錄的屬主
5 path:必選項,定義文件/目錄的路徑(不存在的話能夠直接建立)#
6 recurse:遞歸的設置文件的屬性,只對目錄有效(默認開啓)(指定recurce的話,能夠修改已經存在的文件或者目錄的權限)

7 src:要被連接的源文件的路徑,只應用於state=link的狀況
8 dest:被連接到的路徑,只應用於state=link的狀況 

9 state:  
directory:若是目錄不存在,建立目錄 
file:即便文件不存在,也不會被建立 
link:建立軟連接 hard:建立硬連接 
touch:若是文件不存在,則會建立一個新的文件,若是文件或目錄已存在,則更新其最後修改時間 (不能在不存在的目錄下建立文件,這一點和touch命令同樣)
absent:刪除目錄、文件或者取消連接文件

#遠程批量建立目錄
	不指定屬主屬組,默認是root(當前用戶),不指定mode,那麼權限爲0000
[root@lb01 /code]# ansible 'web_group' -m file -a 'path=/backup state=directory owner=adm group=adm mode=0000'

#遠程批量建立文件(上級目錄必須存在)
[root@lb01 /code]# ansible 'web_group' -m file -a 'path=/backup state=touch owner=adm group=adm mode=0000'

#遠程批量刪除目錄或文件
[root@lb01 /code]# ansible 'web_group' -m file -a 'path=/backup state=absent owner=adm group=adm mode=0000'

#遠程批量建立目錄,(不指定權限的話,屬主屬組爲root,連接文件權限是777)
[root@lb01 /code]# ansible 'web_group' -m file -a 'src=/backup/a.txt dest=/b.txt state=link owner=adm group=adm mode=0000'

yum模塊shell

8.yum模塊
name			#包名,用等於號表示(指定要安裝的軟件包的名稱)
	file://		#指定本地安裝路徑,=yum localinstall -y
	http://		#指定yum倉庫
	
state					#指定動做,用等於號表示
	installed.present	#安裝軟件包
	removed.absent		#刪除軟件包
	latest				#安裝最新版本的軟件包
	
	exclude=kernel*,foo*            #排除某些包
	list=ansible                    #相似於yum list查看是否能夠安裝
	disablerepo="epel,ol7_latest"   #禁用指定的yum倉庫
	download_only=true              #只下載不安裝 yum install d

#下載安裝,使用被控端的源安裝軟件包
[root@m01 ~]# ansible 'web_group' -m yum -a 'name=vsftpd state=present'

#下載安裝,指定源的rpm包,至關於wget,能夠指定包名和協議
[root@m01 ~]# ansible 'web_group' -m yum -a 'name=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm state=present'

#安裝,前提是客戶端指定目錄下有這個rpm包(至關於yum localinstall)
[root@m01 ~]# ansible 'web_group' -m yum -a 'name=/root/zabbix-agent-5.0.0-1.el7.x86_64.rpm state=present'

#卸載
[root@m01 ~]# ansible 'web_group' -m yum -a 'name=zabbix-agent-5.0.0-1.el7.x86_64 state=absent'
[root@m01 ~]# ansible 'web_group' -m yum -a 'name=zabbix state=absent'

#擴展
[root@localhost ~]# ansible all -m yum -a "name=httpd state=latest disable_gpg_check=yes enablerepo=epel"
#state (Choices: present, installed, latest, absent, removed)[Default: present]
#disable_gpg_check:禁止gpg檢查
#enablerepo:只啓動指定的repo

service模塊數據庫

9.service模塊
	1 arguments:給命令行提供一些選項 
	2 enabled:是否開機啓動 yes|no
	3 name:必選項,服務名稱 
	4 pattern:定義一個模式,若是經過status指令來查看服務的狀態時,沒有響應,就會經過ps指令在進程中根據該模式進行查找,若是匹配到,則認爲該服務依然在運行
	5 runlevel:運行級別
	6 sleep:若是執行了restarted,在則stop和start之間沉睡幾秒鐘
	7 state:對當前服務執行啓動,中止、重啓、從新加載等操做(started,stopped,restarted,reloaded)
	
#保持服務啓動並設置爲開機自啓
 ansible web_group -m service -a 'enabled=yes name=httpd state=started'

shell模塊

10.shell模塊
尤爲是用到複雜命令時(如帶管道符等等),可是shell模塊不能作mysql的主從複製,可是nginx編譯安裝的時候只能使用shell模塊
#企業中通常不讓使用shell模塊

#使用ansible批量操做集羣的主機
[root@m01 ~]# ansible 'web_group' -m shell -a 'free -m'
[root@m01 ~]# ansible 'web_group' -m conmand -a 'free -m'
[root@m01 ~]# ansible web01 -m shell -a "ps -ef|grep httpd"

命令的最後也能夠加 -f number ,表示使用的併發進程數目,默認是5個
ansible webserver -a 'netstat -ulntp' -f 15

/usr/bin/ansible 默認使用當前ansible 服務器登錄的用戶來進行管理,若是你不喜歡這樣,也可使用 -u username 的方式來指定用戶
[root@docker ~]# ansible webserver -a "ls" -u zhangsan -f 9
11.script模塊
做用:將本地腳本複製到遠程主機,並執行。(不須要給腳本添加執行權限)

#編輯腳本(只須要放在m01就好)
vim /root/dir.sh
mkdir syy

#執行
absible 'web01' -m script -a '/root/dir.sh'
12.synchronize模塊
	1 archive: 歸檔,至關於同時開啓recursive(遞歸)、links、perms、times、owner、group、-D選項都爲yes ,默認該項爲開啓
 	2 checksum: 跳過檢測sum值,默認關閉
 	3 compress:是否開啓壓縮
 	4 copy_links:複製連接文件,默認爲no ,注意後面還有一個links參數
 	5 delete: 刪除不存在的文件,delete=yes 使兩邊的內容同樣(即以推送方爲主),默認no
 	6 dest:目錄路徑(絕對路徑或者相對路徑)
 	7 dest_port:默認目錄主機上的端口 ,默認是22,走的ssh協議
 	8 dirs:傳速目錄不進行遞歸,默認爲no,即進行目錄遞歸
	9 rsync_opts:經過傳遞數組來指定其餘rsync選項。
	10 set_remote_user:主要用於/etc/ansible/hosts中定義或默認使用的用戶與rsync使用的用戶不一樣的狀況
	11 mode: push或pull 模塊,push模的話,通常用於從本機向遠程主機上傳文件,pull 模式用於從遠程主機上取文件
	12 src: 要同步到目的地的源主機上的路徑; 路徑能夠是絕對的或相對的。若是路徑使用」/」來結尾,則只複製目錄裏的內容,若是沒有使用」/」來結尾,則包含目錄在內的整個內容所有複製 

src=some/relative/path dest=/some/absolute/path rsync_path="sudo rsync"
src=some/relative/path dest=/some/absolute/path archive=no links=yes
src=some/relative/path dest=/some/absolute/path checksum=yes times=no
src=/tmp/helloworld dest=/var/www/helloword rsync_opts=--no-motd,--exclude=.git mode=pull
13.mount模塊
	1 dump fstype:必選項,掛載文件的類型 
	2 name:必選項,掛載點 
	3 opts:傳遞給mount命令的參數
	4 src:必選項,要掛載的文件 
	5 state:必選項 present:只處理fstab中的配置  absent:刪除掛載點 mounted:自動建立掛載點並掛載之 umounted:卸載
	
name=/mnt/dvd src=/dev/sr0 fstype=iso9660 opts=ro state=present
name=/srv/disk src='LABEL=SOME_LABEL' state=present
name=/home src='UUID=b3e48f45-f933-4c8e-a700-22a159ec9077' opts=noatime state=present
ansible test -a 'dd if=/dev/zero of=/disk.img bs=4k count=1024'
ansible test -a 'losetup /dev/loop0 /disk.img'
ansible test -m filesystem 'fstype=ext4 force=yes opts=-F dev=/dev/loop0'
ansible test -m mount 'name=/mnt src=/dev/loop0 fstype=ext4 state=mounted opts=rw'
14.get_url
[root@m01 ~]# ansible-doc get_url								
    url: http://example.com/path/file.conf	#自定下載文件的URL
    dest: /etc/foo.conf						#指定下載的目錄
    mode: '0440'						#指定下載後的權限
    owner
    group
    force_basic_auth: yes		#文件名相同直接覆蓋
	checksum
		md5					#md5校驗
		sha256				#sha校驗
          
      
#遠程鏈接並下載(串行,速度慢)
[root@m01 ~]# ansible 'web_group' -m get_url -a 'url=http://test.driverzeng.com/Nginx_Code/wordpress-4.9.4-zh_CN.tar.gz dest=/root mode=000'

#校驗MD5並下載
[root@m01 ~]# ansible 'web_group' -m get_url -a 'url=http://test.driverzeng.com/Nginx_Code/wordpress-4.9.4-zh_CN.tar.gz dest=/root mode=000 checksum= md5:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c'
15.yum_repository,#更改yum源
[root@m01 ~]#  ansible-doc yum_repository
  yum_repository:			
    name: epel		#不能省略,#指定倉庫文件名和倉庫名,自動添加.repo
    description: 	#至關於倉庫內的name註釋
    baseurl: https://download.fedoraproject.org/pub/epel/$releasever/$basearch/
    
        file: external_repos	#指定倉庫文件名(優先級高),不指定的話倉庫文件名和倉庫名同樣,不能在同一個倉庫文件內添加多個倉庫名不一樣的倉庫,同時指定的話file=倉庫文件名,name=倉庫名
        
        gpgcheck	#是否開啓校驗
        yes
        no
        enabled		#是否啓用yum倉庫
        yes
        no
        
      present		#建立yum倉庫(默認)  
      absent		#刪除yum倉庫
--------------------------------------------------------
#批量添加yum倉庫,不能一次在某一主機添加多個倉庫文件和倉庫,功能有限
[root@m01 ~]# ansible 'web_group' -m yum_repository -a 'name=syy_add_epel description=EEE baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=no enabled=yes file=zdy'

#在客戶端已存在的倉庫文件內添加倉庫(1.指定倉庫文件。2.指定倉庫名,存在即修改,不存在即添加)
[root@m01 ~]# ansible 'web_group' -m yum_repository -a 'name=syy2_add_epel description=EEE baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=no enabled=yes file=zdy'
--------------------------------------------------------------
#批量刪除yum倉庫,只能一個一個刪除倉庫文件(也就是說不能只指定name來批量刪除),file優先級高,能夠只指定name,也能夠同時指定(視狀況而定)
(倉庫文件名和倉庫名要對應,最好都寫上)
[root@m01 ~]# ansible 'web_group' -m yum_repository -a 'name=syy_add_epel file=zdy state=absent'
--------------------------------------------------------------
#修改
不能修改倉庫文件名,也不能修改倉庫名,能夠修改URL
[root@m01 ~]# ansible 'web_group' -m yum_repository -a 'name=syy_add_epelllll description=EEE baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=no enabled=yes file=1'

也能夠修改gpgcheck和enable
[root@m01 ~]# ansible 'web_group' -m yum_repository -a 'name=syy_add_epel description=EEE baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=no enabled=no file=1'

#使用playbook執行yml腳本,能夠實現更精確的操做

ansible服務模塊

systemd
[root@m01 ~]# ansible-doc systemd

  systemd:				#模塊
    state: started 		#啓動
    name: httpd				#指定服務名稱
    state: stopped		#中止
    state: restarted	#重啓
    state: reloaded		#重載配置文件
    enabled: yes		#設置開機自啓
    masked: no			#

#遠程中止服務
[root@m01 ~]# ansible 'web_group' -m systemd -a 'name=nginx state=stopped '

#遠程啓動服務(並設置開機自啓動)
[root@m01 ~]# ansible 'web_group' -m systemd -a 'name=nginx state=started enabled=yes '

ansible用戶組管理模塊

group模塊

[root@m01 ~]# ansible-doc group
    name: somegroup		#指定組名
    state: present 		#建立(默認,課省略)
    state: absent 		#刪除
	gid					#指定建立的組的gid
	
#遠程建立組
[root@m01 ~]# ansible 'web_group' -m group -a 'name=dd gid=233 state=present'

#遠程刪除組
[root@m01 ~]# ansible 'web_group' -m group -a 'name=dd gid=233 state=absent'

ansible用戶管理模塊

user模塊

user:						#模塊
    name: johnd				 #指定用戶名
    uid: 1040				#指定UID
    group: admin			#指定主組
    shell: /bin/bash(/sbin/nologin)				#指定登陸shell
    groups: admins,developers		#添加附加組(group=888)
    state: absent(present)			#刪除用戶	
    comment							#建立用戶的時候添加一段註釋

    generate_ssh_key: yes		#建立公鑰
    ssh_key_bits: 2048			#指定公鑰長度
    ssh_key_file: .ssh/id_rsa	#建立私鑰

	create_home=false				#是否建立家目錄(默認建立true)
------------------------------------------------------
#遠程建立用戶,前提是用戶組必須存在(必須帶單引號)
[root@web ~]# groupadd dd -g 233
[root@m01 ~]# ansible 'web_group' -m user -a 'name=hh uid=171 group=dd  state=present shell=/sbin/nologin create_home=false'
--------------------------------------------------------
#遠程刪除用戶
[root@m01 ~]# ansible 'web_group' -m user -a 'name=hh state=absent'
--------------------------------------------------------
#遠程建立用戶,並生成密鑰對,也能夠只給用戶生成密鑰對
[root@m01 ~]# ansible 'web_group' -m user -a 'name=hh uid=888 group=root shell=/bin/bash generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa' -i ./hosts
----------------------------------------------------------------
#將明文密碼進行hash加密
[root@m01 ~]# ansible web_group -m debug -a "msg={{ 'zls' | password_hash('sha512', 'salt') }}" -i ./hosts
#建立用戶,並制定密碼
[root@m01 ~]# ansible web_group -m user -a 'name=zls1 password=$6$salt$gaWhNcZweYlKQcLU1CqyY/UbYqIeUffVz6ESj87aMNfMX.xYBx0Z.67wzLN/hkkxmNut7SvkksPZ2Zlrse98m/ create_home=true shell=/bin/bash' -i ./hosts

fetch

fetch模塊

[root@m01 ~]# ansible web01 -m fetch -a "src=/root/lol.txt dest=/root"

mount

mount模塊

present     # 開機掛載,即將掛載配置寫入/etc/fstab
mounted     # 掛載設備,並將配置寫入/etc/fstab
unmounted   # 卸載設備,不會清除/etc/fstab寫入的配置
absent      # 卸載設備,會清理/etc/fstab寫入的配置

[root@m01 ~]# ansible web_group -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=present"

[root@m01 ~]# ansible web01 -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=mounted"

壓縮解壓unarchive模塊

官方文檔

 

stat模塊

功能: 獲取遠程文件的狀態信息,包括atime,ctime,mtime,md5,uid,gid等信息。

[root@localhost ~]# ansible all -m stat -a "path=/etc/sysctl.conf"

selinux

#修改配置文件關閉selinux(永久關閉),必須重啓
[root@m01 ~]# ansible web_group -m selinux -a 'state=disabled' -i ./hosts

#臨時關閉
[root@m01 ~]# ansible web_group -m shell -a 'setenforce 0' -i ./hosts

#查看
[root@m01 ~]# ansible web_group -m shell -a 'getenforce' -i ./hosts

firewalld

service                 #指定開放或關閉的服務名稱
port                    #指定開放或關閉的端口
permanent               #是否添加永久生效		#
immediate               #臨時生效
state                   #永久開啓或者關閉
    enabled
    disabled

zone                    #指定配置某個區域
rich_rule               #配置輔規則
masquerade              #開啓地址假裝
source                  #指定來源IP

[root@m01 ~]# ansible web_group -m firewalld -a 'service=http permanent=yes state=enabled' -i ./hosts
[root@m01 ~]# ansible web_group -m firewalld -a "service=http immediate=yes permanent=yes state=enabled" -i ./hosts

[root@m01 ~]# ansible web_group -m firewalld -a "port=8080-8090/tcp immediate=yes permanent=yes state=enabled" -i ./hosts
相關文章
相關標籤/搜索