Ansible02-Ansible Modules模塊詳解

目錄

  • 寫在前面
  • 4. Ansible Modules 模塊
    • 4.1 Ansible常用模塊
      • 4.1.1 Command模塊
      • 4.1.2 shell模塊
      • 4.1.3 scrpit模塊
      • 4.1.4 file模塊
      • 4.1.5 copy模塊
      • 4.1.6 lineinfile模塊
      • 4.1.7 systemd模塊
      • 4.1.8 yum模塊
      • 4.1.9 get_url模塊
      • 4.1.10 yum_repository模塊
      • 4.1.11 user模塊
      • 4.1.12 group模塊
      • 4.1.13 mount模塊
      • 4.1.14 cron模塊
      • 4.1.15 setup模塊
      • 4.1.16 synchronize模塊
      • 4.1.x 官網

寫在前面

這是Ansible系列第二篇,內容為Ansible Modules的介紹、使用
序號連續上篇筆記 Ansible01-Ansible的概述、實驗環境初始化、Inventory

回顧一下Ansible架構:
在這里插入圖片描述

4. Ansible Modules 模塊

Modules,類似于Linux中的命令,如:yum模塊->yum命令;file模塊;user模塊

  • Ansible格式:
ansible -i 指定清單 -m 指定模塊 -a 指定模塊中的選項
  • 查看ansible所有模塊:
ansible-doc -l
  • 查看ansible某模塊的參數選項:
 ansible-doc -s 模塊名#  -s, --snippet         Show playbook snippet for these plugin types: inventory, lookup,module

4.1 Ansible常用模塊

模塊類型模塊名模塊功能
命令和腳本模塊command模塊默認的模塊,執行簡單命令,不支持特殊符號
shell模塊類似command模塊,但支持特殊符號
script模塊分發腳本并執行
文件file創建目錄,文件,軟連接
copy遠程分發文件,修改權限,所有者,備份
服務systemd服務管理
service服務管理,centos7之前使用
軟件包yum_repositoryyum源
yumyum命令
get_url下載軟件
系統管理mount掛載
cron定時任務
用戶管理group管理用戶組
user管理用戶
其他ping檢查 ansible與其他節點連通性
debug用于檢查/顯示 變量
docker/k8s/zabbix/grafana管理docker/k8s/zabbix/grafana
unarchive/rsync/mysql_db/mysql_user壓縮解壓縮/同步數據/數據庫模塊

4.1.1 Command模塊

默認的模塊,執行簡單命令,不支持特殊符號

  • ansible -s command
選項描述
argv將命令作為列表而非字符串傳遞。使用argv可避免對原本會被誤解的值(例如用戶名中帶空格的情況)進行引用。只能提供字符串或列表形式之一,不能同時提供。
chdir在執行命令前切換到此目錄。
cmd要執行的命令。
creates如果該文件已經存在,此步驟不會執行。
removes如果該文件存在,此步驟將會執行。
stdin直接將指定的值設置為命令的stdin。
stdin_add_newline如果設置為yes,在stdin數據末尾追加換行符。
strip_empty_ends從stdout/stderr結果的結尾去除空行。
warn啟用或禁用任務警告。
[root@manager ~]# ansible all -m command -a 'ip a s ens33'
192.168.100.149 | CHANGED | rc=0 >>
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:e1:55:bb brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.100.149/24 brd 192.168.100.255 scope global dynamic noprefixroute ens33valid_lft 1737sec preferred_lft 1737secinet6 fe80::20c:29ff:fee1:55bb/64 scope linkvalid_lft forever preferred_lft forever#切換到指定目錄
[root@manager ~]# ansible front -m command -a 'chdir=/root ls'
192.168.100.148 | CHANGED | rc=0 >>
anaconda-ks.cfg
test1.log

4.1.2 shell模塊

類似command模塊,不過支持特殊符號

[root@manager ~]# ansible all -m shell -a "ip a s ens33 | awk -F'[/ ]+' 'NR==4{print \$3}'"
192.168.100.150 | CHANGED | rc=0 >>
192.168.100.150
192.168.100.148 | CHANGED | rc=0 >>
192.168.100.148
192.168.100.149 | CHANGED | rc=0 >>
192.168.100.149

4.1.3 scrpit模塊

用于執行腳本的模塊

#編寫shell腳本
[root@manager ~]# cat sys_info.sh
#!/bin/bash
#author: tassel
#desc: ansible script modules test shellscript
hostname
hostname -I
ip a s ens33 |awk -F'[ /]+' 'NR==4{print $3}'
uptime
whoami
date +%F
sleep 10 #用于可以ps -ef和pstree查看ansible狀態#測試
[root@manager ~]# ansible all -m script -a '/root/sys_info.sh'
192.168.100.149 | CHANGED => {"changed": true,"rc": 0,"stderr": "Shared connection to 192.168.100.149 closed.\r\n","stderr_lines": ["Shared connection to 192.168.100.149 closed."],"stdout": "backup\r\n192.168.100.149 \r\n192.168.100.149\r\n 20:05:14 up 24 min,  1 user,  load average: 0.68, 0.58, 0.33\r\nroot\r\n2024-05-26\r\n","stdout_lines": ["backup","192.168.100.149 ","192.168.100.149"," 20:05:14 up 24 min,  1 user,  load average: 0.68, 0.58, 0.33","root","2024-05-26"]
}#ps和pstree查看
ps -ef | grep ansible 
root        2679    1728 55 20:07 pts/0    00:00:01 /usr/bin/python3.11 /usr/bin/ansible all -m script -a /root/sys_info.sh
root        2682    2679  5 20:07 pts/0    00:00:00 /usr/bin/python3.11 /usr/bin/ansible all -m script -a /root/sys_info.sh
root        2683    2679  4 20:07 pts/0    00:00:00 /usr/bin/python3.11 /usr/bin/ansible all -m script -a /root/sys_info.sh
root        2684    2679  4 20:07 pts/0    00:00:00 /usr/bin/python3.11 /usr/bin/ansible all -m script -a /root/sys_info.sh
## 不難發現,使用python運行
#pstree 也可以看到,是ssh執行腳本
─sshd(921)─┬─sshd(1721)───sshd(1726)───bash(1728)│           ├─sshd(1725)───sshd(1758)───sftp-server(1759)│           ├─sshd(2526)───sshd(2531)───bash(2533)───pstree(2674)│           └─sshd(2530)───sshd(2561)───sftp-server(2564)

4.1.4 file模塊

file模塊管理文件、目錄、軟連接。
相當于結合了touch、mkdir、rm、ln-s

  • 常用參數介紹:
參數解釋
srcAnsible端源文件或者目錄,一般用于軟連接;
follow支持link文件拷貝;
force覆蓋遠程主機不一致的內容;
group設定遠程主機文件夾的組名;
mode指定遠程主機文件及文件夾的權限;
owner設定遠程主機文件夾的用戶名;
path(必寫)目標路徑,也可以用dest,name代替;
state狀態包括:file(默認)更新文件,不存在不創建、link創建軟連接、directory創建目錄、hard、touch創建文件、absent遞歸刪除;
attributes文件或者目錄特殊屬性。
# 創建文件
[root@manager ~]# ansible front -m file -a 'path=/tmp/0526.txt state=touch'
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"dest": "/tmp/0526.txt","gid": 0,"group": "root","mode": "0644","owner": "root","secontext": "unconfined_u:object_r:user_tmp_t:s0","size": 0,"state": "file","uid": 0
}[root@front ~]# ls /tmp
0526.txt                    ######遞歸創建目錄
[root@manager ~]#  ansible front -m file -a 'path=/tmp/a/b/c/d/e state=directory'
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"gid": 0,"group": "root","mode": "0755","owner": "root","path": "/tmp/a/b/c/d/e","secontext": "unconfined_u:object_r:user_tmp_t:s0","size": 6,"state": "directory","uid": 0
}[root@front ~]# tree -F /tmp
/tmp
├── 0526.txt
├── a/
│   └── b/
│       └── c/
│           └── d/
│               └── e/######創建軟連接
[root@manager ~]# ansible front -m file -a 'path=/tmp/hosts_sl src=/etc/hosts state=link'
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"dest": "/tmp/hosts_sl","gid": 0,"group": "root","mode": "0777","owner": "root","secontext": "unconfined_u:object_r:user_tmp_t:s0","size": 10,"src": "/etc/hosts","state": "link","uid": 0
}[root@manager ~]# ansible front -m shell -a 'ls -l /tmp/hosts*'
192.168.100.148 | CHANGED | rc=0 >>
lrwxrwxrwx. 1 root root 10 May 26 20:40 /tmp/hosts_sl -> /etc/hosts######修改權限
[root@manager ~]# ansible front -m file -a 'path=/tmp/ansible-test mode=700 owner=nobody group=nobody state=directory'
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"gid": 65534,"group": "nobody","mode": "0700","owner": "nobody","path": "/tmp/ansible-test","secontext": "unconfined_u:object_r:user_tmp_t:s0","size": 6,"state": "directory","uid": 65534
}[root@manager ~]# ansible front -m shell -a 'ls -ld /tmp/ansible-test'                         192.168.100.148 | CHANGED | rc=0 >>
drwx------. 2 nobody nobody 6 May 26 20:44 /tmp/ansible-test###### 刪除目錄(遞歸,若刪除高層目錄,其子目錄也被刪除)
[root@manager ~]# ansible front -m file -a 'path=/tmp/a/b/c/ state=absent'
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"path": "/tmp/a/b/c/","state": "absent"
}[root@manager ~]# ansible front -m shell -a 'tree -F /tmp'
192.168.100.148 | CHANGED | rc=0 >>
/tmp
├── 0526.txt
├── a/
│   └── b/

4.1.5 copy模塊

批量分發,類似于scp:1個節點(管理節點)發送文件或壓縮包到所有被管理端.
注意:copy是單向的傳輸。

還有一個fetch 批量拉取

選項解釋
srcsource 源文件,管理端的某個文件.
destdestination 目標,被管理端的目錄/文件.
backupbackup=yes 則會在覆蓋前進行備份,文件內容要有變化或區別.
mode修改權限
owner修改為指定所有者
group修改為指定用戶組
# 傳輸/etc/hosts到所有主機組的主機
[root@manager ~]# ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts backup=yes'
192.168.100.150 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"backup_file": "/etc/hosts.4177.2024-05-26@20:53:57~","changed": true,"checksum": "54e822ead7405808873d7efeb6ae02f1b58b1962","dest": "/etc/hosts","gid": 0,"group": "root","md5sum": "a608fd387bb46d36a21adb75b01490c0","mode": "0644","owner": "root","secontext": "system_u:object_r:net_conf_t:s0","size": 183,"src": "/root/.ansible/tmp/ansible-tmp-1716728034.4922798-3386-265280371596300/source","state": "file","uid": 0
}[root@manager ~]# ansible front -m shell -a 'ls /etc/hosts*'
192.168.100.148 | CHANGED | rc=0 >>
/etc/hosts
/etc/hosts.7761.2024-05-26@20:53:57~

4.1.6 lineinfile模塊

修改配置文件使用,類似sed 's///g’和sed ‘cai’

4.1.7 systemd模塊

systemd模塊類似systemctl命令

service模塊,是centos7之前的service命令

systemd模塊說明
name(必須寫)用于指定服務名稱
enabledyes開機自啟動 (yes/no)
state表示服務開,關,重啟 started 開啟、state=stopped 關閉、state=reloaded 重讀配置文件(服務支持)、state=restarted 重啟(關閉再開啟)
daemon-reloadyes是否重新加載對應的服務的管理配置文件(書寫systemctl配置文件)
#開啟并開機自啟 nfs
[root@manager ~]# ansible storage -m systemd -a 'name=nfs-server enabled=yes state=started'
192.168.100.150 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"enabled": true,"name": "nfs-server","state": "started",# 關閉并開機不自啟 firewalld
[root@manager ~]# ansible front -m systemd -a 'name=firewalld enabled=no state=stopped'
192.168.100.148 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"enabled": false,"name": "firewalld","state": "stopped",# 重啟nfs
[root@manager ~]# ansible storage -m systemd -a 'name=nfs-utils state=reloaded'
192.168.100.150 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"name": "nfs-utils","state": "started",

4.1.8 yum模塊

yum安裝軟件

選項描述
name必選項,所安裝的包的名稱
state安裝-> present(installed) ; 安裝最新版本的-> latest ;卸載包->absent(removed)
update_cache強制更新yum的緩存
conf_file指定遠程yum安裝時所依賴的配置文件(安裝本地已有的包)。
disable_pgp_check是否禁止GPG checking,只用于presentor latest。
disablerepo臨時禁止使用yum庫。 只用于安裝或更新時。
enablerepo臨時使用的yum庫。只用于安裝或更新時。
skip_borken跳過異常軟件節點
autoremove當設置為yes且狀態為absent時,自動移除不再被任何已安裝包依賴的包。
#安裝軟件
ansible all -m yum -a 'name=tree,lrzsz,sshpass state=present'
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"msg": "","rc": 0,"results": ["Installed: lrzsz-0.12.20-43.el8.x86_64","Installed: sshpass-1.09-4.el8.x86_64"]
}#更新軟件包
ansible all -m yum -a "name=rsync state=latest"

4.1.9 get_url模塊

相當于wget命令,需要所有主機均能訪問互聯網
建議在管理節點下載好軟件包后,copy分發

選項功能
url指定要下載的地址
dest下載到哪個目錄
#下載zabbix
https://mirrors.aliyun.com/zabbix/zabbix/6.5/centos/8/x86_64/zabbix-agent-7.0.0-alpha3.release1.el8.x86_64.rpm[root@manager ~]# ansible all -m get_url -a 'url=https://mirrors.aliyun.com/zabbix/zabbix/6.5/centos/8/x86_64/zabbix-agent-7.0.0-alpha3.release1.el8.x86_64.rpm dest=/tmp/'
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"checksum_dest": null,"checksum_src": "b65b658d3246bac2783436b45e499fa57c68a5ef","dest": "/tmp/zabbix-agent-7.0.0-alpha3.release1.el8.x86_64.rpm","elapsed": 0,"gid": 0,"group": "root","md5sum": "cba9f70da1ef01574bd2608b43d39b31","mode": "0644","msg": "OK (599492 bytes)","owner": "root","secontext": "unconfined_u:object_r:admin_home_t:s0","size": 599492,"src": "/root/.ansible/tmp/ansible-tmp-1716729618.362924-3810-161846721092095/tmpb1f4j0t0","state": "file","status_code": 200,"uid": 0,"url": "https://mirrors.aliyun.com/zabbix/zabbix/6.5/centos/8/x86_64/zabbix-agent-7.0.0-alpha3.release1.el8.x86_64.rpm"
}[root@manager ~]# ansible all -m shell -a 'ls /tmp/zabbix*'
192.168.100.148 | CHANGED | rc=0 >>
/tmp/zabbix-agent-7.0.0-alpha3.release1.el8.x86_64.rpm
192.168.100.149 | CHANGED | rc=0 >>
/tmp/zabbix-agent-7.0.0-alpha3.release1.el8.x86_64.rpm
192.168.100.150 | CHANGED | rc=0 >>
/tmp/zabbix-agent-7.0.0-alpha3.release1.el8.x86_64.rpm#調用yum模塊安裝ansible all -m yum -a 'name=/tmp/zabbix-agent-7.0.0-alpha3.release1.el8.x86_64.rpm state=present'

4.1.10 yum_repository模塊

更推薦寫好yum配置文件,再copy推送

選項解釋
nameyum源中名字 [epel]
descriptionyum源的注釋說明 對應的 是name的內容
baseurlyum源中 baseurl 下載地址
enabled是否啟動這個源 yes/no
gpgcheck是否啟動gpgcheck功能 no
file指定yum源的文件 自動添加 .repo 默認與模塊名字一致.
  • yum配置文件與yum-repository對比:
yum配置文件yum-repository選項
[epel]name=epel #默認yum源文件的名字與這個一致.
name=Extra Pxxxxxdescription=“Extra xxxxxxx”
baseurl=http://mirrors.aliyun.com/epel/7/$basearchbaseurl=“http://mirrors.aliyun.com/epel/7/$basearch”
enabled=1enabled=yes
gpgcheck=0gpgcheck=no

4.1.11 user模塊

選項描述
comment用戶的描述信息
create_home是否創建家目錄(yes/no)
force在使用state=absent時, 行為與userdel –force一致
group指定基本組
groups指定附加組,如果指定為(groups=)表示刪除所有組
home指定用戶家目錄
move_home如果設置為home=時, 試圖將用戶主目錄移動到指定的目錄
name(重要)指定用戶名
non_unique該選項允許改變非唯一的用戶ID值
password(重要)指定用戶密碼 password={{‘密碼’
remove在使用state=absent時, 行為是與userdel –remove一致
shell(重要)指定默認shell /bin/bash,/sbin/nologin
state(重要)設置帳號狀態,默認為present表示新建用戶,指定值為absent表示刪除
system當創建一個用戶,設置這個用戶是系統用戶。這個設置不能更改現有用戶
uid(重要)指定用戶的uid
update_password更新用戶密碼
expires指明密碼的過期時間
append添加一個新的組
#創建一個用戶,uid2000,nologin
[root@manager ~]# ansible all -m user -a 'name=ans uid=2000 shell=/sbin/nologin create_home=no state=present'
192.168.100.149 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"comment": "","create_home": false,"group": 2000,"home": "/home/ans","name": "ans","shell": "/sbin/nologin","state": "present","system": false,"uid": 2000
}# 更新密碼
[root@manager ~]# ansible all -m user -a "name=test password={{'1'|password_hash('sha512','hashsalt')}} state=present"
[DEPRECATION WARNING]: Encryption using the Python crypt module is deprecated. The Python
crypt module is deprecated and will be removed from Python 3.13. Install the passlib library
for continued encryption functionality. This feature will be removed in version 2.17.
Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"comment": "","create_home": true,"group": 2001,"home": "/home/test","name": "test","password": "NOT_LOGGING_PASSWORD","shell": "/bin/bash","state": "present","system": false,"uid": 2001
}

4.1.12 group模塊

類比user模塊

4.1.13 mount模塊

mount選項說明
fstype文件系統類型,指定文件系統,如xfs, ext4, iso9660, nfs等
src源地址,例如NFS地址(例如172.16.1.31/data)
path注意這里不是dest,掛載點,即要把源掛載到的目標路徑
stateabsent 卸載并修改fstab;unmounted 卸載不修改/etc/fstab;present 僅修改/etc/fstab 不掛載;mounted 掛載并修改/etc/fstab;remounted 重新掛載
#掛載nfs#1. 安裝nfs
[root@manager ~]# ansible front -m yum -a 'name=nfs-utils state=present'
192.168.100.148 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"msg": "Nothing to do","rc": 0,"results": []
}#2.創建掛載文件夾
[root@manager ~]# ansible front -m file -a 'path=/ans-upload state=directory'
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"gid": 0,"group": "root","mode": "0755","owner": "root","path": "/ans-upload","secontext": "unconfined_u:object_r:default_t:s0","size": 6,"state": "directory","uid": 0
}#3.掛載nfs并檢查
[root@manager ~]# ansible front -m mount -a 'src=192.168.100.150:/nfsupload/ path=/ans-upload/ fstype=nfs state=mounted'
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"backup_file": "","boot": "yes","changed": true,"dump": "0","fstab": "/etc/fstab","fstype": "nfs","name": "/ans-upload/","opts": "defaults","passno": "0","src": "192.168.100.150:/nfsupload/"
}
[root@manager ~]# ansible front -a 'df -h /ans-upload'
192.168.100.148 | CHANGED | rc=0 >>
Filesystem                  Size  Used Avail Use% Mounted on
192.168.100.150:/nfsupload   64G  2.3G   62G   4% /ans-upload
[root@manager ~]# ansible front -a 'grep upload /etc/fstab'
192.168.100.148 | CHANGED | rc=0 >>
192.168.100.150:/nfsupload/ /ans-upload/ nfs defaults 0 0# 4. 卸載nfs并刪除fstab
[root@manager ~]# ansible front -m mount -a 'src=192.168.100.150:/nfsupload/ path=/ans-upload/ fstype=nfs state=absent'
192.168.100.148 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"backup_file": "","boot": "yes","changed": true,"dump": "0","fstab": "/etc/fstab","fstype": "nfs","name": "/ans-upload/","opts": "defaults","passno": "0","src": "192.168.100.150:/nfsupload/"
}
[root@manager ~]# ansible front -a 'df -h /ans-upload'                                         192.168.100.148 | FAILED | rc=1 >>
df: /ans-upload: No such file or directorynon-zero return code
[root@manager ~]# ansible front -a 'grep upload /etc/fstab'                                    192.168.100.148 | FAILED | rc=1 >>
non-zero return code

4.1.14 cron模塊

管理系統的定時任務

cron模塊選項說明
name定時任務名字(一定要加上),對應下面注釋的內容
minute分鐘,例如 "*" 表示每分鐘,"5" 表示第5分鐘
hour小時,例如 "*" 表示每個小時,"12" 表示中午12點
day日期,例如 "*" 表示每天,"1" 表示每月1日
month月份,例如 "*" 表示每個月,"6" 表示6月
week周幾,例如 "*" 表示每天,"0" 表示周日
job指定命令或腳本(重定向到空),例如 "/sbin/ntpdate ntp1.aliyun.com &>/dev/null"
statepresent 表示添加定時任務(默認);absent 表示刪除
# 設置每3分鐘定時同步時間
[root@manager ~]# ansible all -m cron -a 'name="sync time" minute="*/3" job="/sbin/ntpdate ntp1.aliyun.com &> /dev/null" state=present'
192.168.100.149 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"envs": [],"jobs": ["sync time"]
}[root@manager ~]# ansible all -a 'crontab -l'
192.168.100.149 | CHANGED | rc=0 >>
#Ansible: sync time
*/3 * * * * /sbin/ntpdate ntp1.aliyun.com &> /dev/null#刪除
[root@manager ~]# ansible all -m cron -a 'name="sync time" state=absent'                       192.168.100.149 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"envs": [],"jobs": []
}[root@manager ~]# ansible all -a 'crontab -l'
192.168.100.149 | CHANGED | rc=0 >>

4.1.15 setup模塊

用于收集遠程主機的信息,并將這些信息以facts的形式返回給Ansible控制節點。
這些facts可以包括系統變量(如操作系統類型、架構、網絡配置、已安裝軟件包等),并且在Playbook執行期間可以被其他任務使用。

選項描述
fact_path用于存放本地Ansible事實(*.fact文件)的路徑。此目錄下的文件如果可執行,將被執行,其結果會被添加到ansible_local事實中;如果文件不可執行,則會被讀取。適用于從2.1版本開始。文件/結果格式可以是JSON或INI格式。默認的fact_path可以在ansible.cfg中為自動調用setup作為gather_facts一部分時指定。Windows環境下有特定選項,請查看注釋。
filter如果提供,僅返回匹配此shell風格(fnmatch通配符)的變量。這允許篩選出特定的facts進行查看或使用。
gather_subset如果提供,限制收集的額外事實子集。可能的值包括:all(全部)、min(最小集合)、hardware(硬件信息)、network(網絡信息)、virtual(虛擬化信息)、ohai(類似Chef Ohai的擴展信息)、facter(使用Facter收集的信息)。可以指定值的列表來定義更大的子集。值前可加!來排除特定子集的收集,例如:!hardware,!network,!virtual,!ohai,!facter。如果指定!all,則只收集最小集合。要避免收集最小集合,可以指定!all,!min。要僅收集特定事實,使用!all,!min并指定特定的事實子集。如果只想隱藏某些收集到的事實,使用filter參數。
gather_timeout設置單個事實收集的默認超時時間(以秒為單位)。這有助于控制事實收集過程,避免因個別慢速收集導致整個任務超時。
#查看內存
[root@manager ~]# ansible front -m setup -a "filter='*mem*'"
192.168.100.148 | SUCCESS => {"ansible_facts": {"ansible_memfree_mb": 3028,"ansible_memory_mb": {"nocache": {"free": 3371,"used": 269},"real": {"free": 3028,"total": 3640,"used": 612},"swap": {"cached": 0,"free": 4027,"total": 4027,"used": 0}},"ansible_memtotal_mb": 3640,"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false
}

4.1.16 synchronize模塊

使用rsync進行文件和目錄同步的功能

選項描述
compress開啟壓縮,默認為開啟
archive是否采用歸檔模式同步,保證源和目標文件屬性一致
checksum是否效驗文件的校驗和
dirs以非遞歸的方式傳輸目錄
links同步鏈接文件
recursive是否遞歸同步子目錄,yes/no
rsync_opts使用rsync的額外參數
copy_links同步的時候是否復制連接
delete刪除源中沒有而目標存在的文件
src源目錄及文件
dest目標目錄及文件
dest_port目標接受的端口
rsync_path服務的路徑,指定rsync命令來在遠程服務器上運行
rsync_timeout指定rsync操作的IP超時時間
set_remote_user設置遠程用戶名
–exclude=.log忽略同步.log結尾的文件
mode同步的模式,rsync同步的方式PUSH、PULL,默認都是推送push
#將本地的/tmp同步到front組的/tmp
ansible front -m synchronize -a "src=/tmp/ dest=/tmp/"#完全同步,類似rsync的完全同步
ansible front -m synchronize  -a 'src=/tmp/ dest=/tmp/ delete=yes'

4.1.x 官網

docs.ansible.com

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/16199.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/16199.shtml
英文地址,請注明出處:http://en.pswp.cn/web/16199.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IPv4 報頭 Protocol 字段和 IPv6 報頭 Next header 字段中的 IP 協議號列表

IPv4 基本報頭&#xff08;20 ~ 60 Byte&#xff09; IPv6 基本報頭&#xff08;40 Byte&#xff09; IPv4 Header vs IPv6 Header 黃色 為 IPv6 與 IPv4 相同 紅色 為 IPv6 刪除的 藍色 為名稱不同功能相同 中青色 為新增的 Type of service Traffic Class &#xff08;用于…

js知識點匯總之let const 和 var的區別

let const 和 var的區別 作用域 ES5 中的作用域有&#xff1a;全局作用域、函數作用域&#xff0c;ES6 中新增了塊級作用域。塊作用域由 { } 包括&#xff0c;if 語句和 for 語句里面的 { } 也屬于塊作用域。 var關鍵字 沒有塊級作用域的概念 // global scope {var a 10;…

AGI系列(2):掌握AI大模型提示詞優化術,從容應對各種提問場景

在上一篇大模型提示詞的文章中&#xff0c;筆者介紹一種通用提示詞優化的方法&#xff0c;這種方法基本上可以覆蓋大部分人的一般場景需求。 沒看到上文的讀者&#xff0c;可以通過如下鏈接去看下&#xff1a; &#x1f449;&#x1f449;&#x1f449; AGI系列&#xff08;1&a…

全網首發UNIAPP功能多的iapp后臺源碼

全網首發UNIAPP功能多的iapp后臺源碼&#xff0c;眾所周知UN Dev Assist 后臺是一款既不免費又不好用的后臺今天直接分享。 搭建教程在里面了&#xff0c;自己查看。 源碼下載&#xff1a;https://download.csdn.net/download/m0_66047725/89291994 更多資源下載&#xff1a;…

【Python】處理不平衡數據集的高級方法:ADASYN詳解

原諒把你帶走的雨天 在漸漸模糊的窗前 每個人最后都要說再見 原諒被你帶走的永遠 微笑著容易過一天 也許是我已經 老了一點 那些日子你會不會舍不得 思念就像關不緊的門 空氣里有幸福的灰塵 否則為何閉上眼睛的時候 又全都想起了 誰都別說 讓我一個人躲一躲 你的承諾 我竟然沒懷…

匯編原理(二)

寄存器&#xff1a;所有寄存器都是16位&#xff08;0-15&#xff09;&#xff0c;可以存放兩個字節 AX,BX,CX,DX存放一般性數據&#xff0c;稱為通用寄存器 AX的邏輯結構。最大存放的數據為2的16次方減1。可分為AH和AL&#xff0c;兼容8位寄存器。 字&#xff1a;1word 2Byte…

JVM學習-Class文件結構②

訪問標識(access_flag) 在常量池后&#xff0c;緊跟著訪問標記&#xff0c;標記使用兩個字節表示&#xff0c;用于識別一些類或接口層次的訪問信息&#xff0c;包括這個Class是類還是接口&#xff0c;是否定義為public類型&#xff0c;是否定義為abstract類型&#xff0c;如果…

健身房會員管理系統服務預約小程序的作用是什么

擁有完美身材/減肥/鍛煉等前往健身房是個不錯的選擇&#xff0c;商家生意開展需要吸引同城客戶并轉化&#xff0c;客戶也有自己的判斷需要找到更全面的場地&#xff1b;完善客戶消費流程利于品牌發展和不斷獲客轉化。 運用【雨科】平臺搭建健身房管理系統小程序&#xff0c;多…

MySQL事務篇1:事物的四大特性(ACID)、三類數據讀取問題與隔離級別

一、什么是事務&#xff1f; MySQL的事務&#xff08;Transaction&#xff09;是一組由數據庫管理系統&#xff08;DBMS&#xff09;執行的一個或多個SQL語句的集合&#xff0c;這些SQL語句作為一個單獨的工作單元執行。事務的主要目的是確保數據庫的一致性和完整性&#xff0c…

藍橋杯2023(十四屆)省賽——飛機降落(雙馬尾DFS)

飛機降落&#xff08;DFS&#xff09; 藍橋杯2023年第十四屆省賽真題-飛機降落 - C語言網 (dotcpp.com) 一開始我是真的沒想到用DFS做&#xff0c;我還在想用什么策略排序呢。需要再刷&#xff01;&#xff01;&#xff01; 雙馬尾的意思其實是刷了兩次... 一刷&#xff1a…

leecode 637 二叉樹的層平均值

leetcode 二叉樹相關-層序遍歷專題 二叉樹的層序遍歷一般來說&#xff0c;我們是利用隊列來實現的&#xff0c;先把根節點入隊&#xff0c;然后在出隊后將其對應的子節點入隊&#xff0c;然后往復此種操作。相比于二叉樹的遍歷遞歸&#xff0c;層序遍歷比較簡單&#xff0c;有…

CHI協議_1

作者&#xff1a;someone鏈接&#xff1a;https://www.zhihu.com/question/304259901/answer/3455648666來源。 1. AMBA CHI簡介 一致性總線接口&#xff08;CHI&#xff09;是AXI一致性擴展&#xff08;ACE&#xff09;協議的演進。它是Arm的AMBA總線的一部分。AMBA是一種免…

美團Java社招面試題真題,最新面試題

如何處理Java中的內存泄露&#xff1f; 1、識別泄露&#xff1a; 使用內存分析工具&#xff08;如Eclipse Memory Analyzer Tool、VisualVM&#xff09;來識別內存泄露的源頭。 2、代碼審查&#xff1a; 定期進行代碼審查&#xff0c;關注靜態集合類屬性和監聽器注冊等常見內…

VueJS ReactJS實現AI問答小助手(2)——流式TTS文字轉實時語音播放

TTS(Text-to-speech)文字轉語音使用的是阿里云的服務,文檔地址: https://help.aliyun.com/zh/isi/developer-reference/streaming-text-tts-wss 文檔只給出了一些配置項的說明,以及java端的代碼示例,但沒有web端的。所以這篇筆記可以給web開發者參考。 首先,AI答復的消息…

.NET File Upload

VS2022 .NET8 &#x1f4be;基礎上傳示例 view {ViewData["Title"] "File Upload"; }<h1>ViewData["Title"]</h1><form method"post" enctype"multipart/form-data" action"/Home/UploadFile"…

Android 系統日志(Log) JNI實現流程源碼分析

1、JNI概述 Java Native Interface (JNI) 是一種編程框架&#xff0c;使得Java代碼能夠與用其他編程語言&#xff08;如C和C&#xff09;編寫的本地代碼進行交互。JNI允許Java代碼調用本地代碼的函數&#xff0c;也允許本地代碼調用Java代碼的函數。下面是對JNI機制的詳細概述…

【單片機】STM32F070F6P6 開發指南(一)STM32建立HAL工程

文章目錄 一、基礎入門二、工程初步建立三、HSE 和 LSE 時鐘源設置四、時鐘系統&#xff08;時鐘樹&#xff09;配置五、GPIO 功能引腳配置六、配置 Debug 選項七、生成工程源碼八、生成工程源碼九、用戶程序下載 一、基礎入門 f0 pack下載&#xff1a; https://www.keil.arm…

【OpenCV 基礎知識 19】拉普拉斯變換

功能&#xff1a; cvLaplace 是計算圖像的 Laplacian 變換 &#xff0c;是Intel開源項目opencv中的函數 函數形式&#xff1a; void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size3 ); 參數列表&#xff1a; Src 輸入圖像. Dst 輸出圖像. aperture_size算子內…

離線初始化k8s

導出和導入所有必要的 Kubernetes 鏡像&#xff0c;使用阿里云作為源。 在能訪問外網的機器上拉取鏡像 首先&#xff0c;在有外網訪問的機器上運行以下命令來拉取所有 Kubernetes v1.29.5 版本需要的鏡像&#xff1a; kubeadm config images pull --image-repository regist…

大模型應用:基于Golang實現GPT模型API調用

1.背景 當前OpenAI提供了開放接口&#xff0c;支持通過api的方式調用LLM進行文本推理、圖片生成等能力&#xff0c;但目前官方只提供了Python SDK。為了后續更方便集成和應用&#xff0c;可以采用Golang對核心推理調用接口進行封裝&#xff0c;提供模型調用能力。 2.相關準備…