日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CentOS 7.6安装使用Ansible(二):Ansible常用的27个模块

發布時間:2025/3/20 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CentOS 7.6安装使用Ansible(二):Ansible常用的27个模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

三、Ansible常用模塊介紹:

1、ping:測試被管控主機連通性

# ansible all --list-hosts

# ansible dbsrvs --list-hosts

查看參數:# ansible-doc -s ping

示例:測試所有被管控主機的連通性

# ansible all -m ping

備注:ping模塊后無需加key=value格式的參數列表

2、hostname:設置主機名

查看參數:# ansible-doc -s hostname

示例:將被管控主機192.168.1.144的主機名修改為144

# ansible 192.168.1.144 -m hostname -a 'name=144'

3、group:增加或刪除用戶組

查看參數:# ansible-doc -s group

示例1:在所有被管控主機創建gid2000的用戶組testgroup

# ansible all -m group -a 'gid=2000 name=testgroup state=present system=no'

示例2:刪除testgroup用戶組

# ansible all -m group -a 'gid=2000 name=testgroup state=absent'

4、user:管理用戶賬戶

查看參數:# ansible-doc -s user

示例1:在所有被管控主機創建uid3000、基本組為mygroup、附加組為testgroupshell/bin/bash、注釋為test的非系統用戶testuser

# ansible all -m user -a 'uid=3000 group=mygroup groups=testgroup shell=/bin/bash comment=test system=no state=present name=testuser append=yes'

備注:

?? 基本組mygroup和附加組testgroup必須事先存在

?? 當不使用group設置基本組時,默認基本組與用戶名相同

?? 當不使用groups設置附加組時,默認附加組與用戶名相同

?? 可以設置多個附加組,用逗號隔開

?? append:默認為no,覆蓋原來多個附加組,設置為yes,表示追加附加組到現有的附加組

示例2:刪除用戶testuser及其家目錄

#?ansible all -m user -a 'uid=3000 state=absent name=testuser remove=yes'

5、shell:在被管控主機執行命令

查看參數:# ansible-doc -s shell

示例:在所有被管控主機設置用戶testuser的密碼為123456

# ansible all -m shell -a 'echo 123456 | passwd --stdin testuser'

備注:shell模塊后直接加需要執行的命令,而非key=value格式的參數列表

6、command:在被管控主機執行命令(無法執行管道、重定向等命令)

查看參數:# ansible-doc -s command

示例:查看所有被管控主機的網卡信息

# ansible all -m command -a 'ip a l'

備注:command模塊后直接加需要執行的命令,而非key=value格式的參數列表

7、fetch:從被管控主機拉取文件至Ansible主機

查看參數:# ansible-doc -s fetch

示例:將被管控主機中的/software/test.txt文件復制至本地Ansible主機的/tmp目錄中

# ansible all -m fetch -a 'src=/software/test.txt dest=/tmp/'

備注:

?? 被管控主機中文件/software/test.txt必須事先存在

?? 參數src中指定的必須是文件,不能是目錄

???如果被管控主機在hosts文件中定義了主機別名,則Ansible主機本地保存的文件路徑為:/tmp/被管控主機別名/software/test.txt;如果直接定義了IP地址,則路徑為:/tmp/被管控主機IP/software/test.txt

8、copy:將Ansible主機文件復制至被管控主機

查看參數:# ansible-doc -s copy

示例1:將本地文件/etc/fstab復制至所有被管控主機的/software目錄下,且重命名為fstab.ansible,文件屬主為testuser,屬組為testgroup

# ansible all -m copy -a 'src=/etc/fstab dest=/software/fstab.ansible owner=testuser group=testgroup backup=yes'

備注:

?? 如果參數src和參數dest均為文件,則參數dest的父目錄/software必須事先存在

?? 遠程主機用戶testuser和用戶組testgroup必須事先存在

?? 參數backup:創建一個包含時間戳信息的備份文件

示例2:將本地/tmp目錄中的所有文件復制至所有被管控主機的/software目錄下,且文件權限修改為600

# ansible all -m copy -a 'src=/tmp/ dest=/software mode=0600'

備注:

?? 目錄/software必須事先存在

?? 權限的寫法

??2? 0600

? ??2? "600"

? ??2? 1.8版本開始,支持類似u+rwxu=rw,g=r,o=r

? ??2? 2.3版本開始,支持mode=preserve,表示將授予該文件與源文件相同的權限

示例3:將本地/tmp目錄遞歸復制至所有被管控主機的/test目錄下,且新創建的目錄權限為755,目錄和文件的屬主均為testuser,屬組均為testgroup

# ansible all -m copy -a 'src=/tmp dest=/test directory_mode=0755 owner=testuser group=testgroup'

備注:

?? 如果遠程主機中不存在/test目錄,并且參數dest以“/”結尾或參數src是目錄,則遠程主機會自動創建/test目錄

?? 遠程主機用戶testuser和用戶組testgroup必須事先存在

?? directory_mode:遞歸的設定目錄的權限,默認為系統默認權限

示例4:在所有被管控主機的/tmp目錄中新建屬主為testuser、屬組為testgroup、權限為600,且名稱為test.txt的文件,內容為hello world

# ansible all -m copy -a 'content="hello world\n" dest=/tmp/test.txt owner=testuser group=testgroup mode=0600'

9、file:設置文件屬性

查看參數:# ansible-doc -s file

示例1:在所有被管控主機的/tmp目錄中創建名稱為a.txt的文件

# ansible all -m file -a 'path=/tmp/a.txt state=touch'

示例2:在所有被管控主機的/tmp目錄中創建a.txt的符號鏈接文件a.link

# ansible all -m file -a 'src=/tmp/a.txt path=/tmp/a.link state=link'

備注:參數src只應用于state=linkstate=hard

示例3:在所有被管控主機的/tmp目錄中創建屬主為testuser、屬組為testgroup、權限為700,且名稱為test的目錄

# ansible all -m file -a 'path=/tmp/test owner=testuser group=testgroup mode=0700 state=directory'

示例4:在所有被管控主機的/tmp目錄中刪除test目錄

# ansible all -m file -a 'path=/tmp/test state=absent'

10、cron:管理任務計劃

查看參數:# ansible-doc -s cron

示例1:在所有被管控主機執行任務計劃,要求每3分鐘同步內網NTP服務器192.168.1.142

# ansible all -m cron -a 'minute=*/3 job="/usr/sbin/ntpdate 192.168.1.142 &> /dev/null" name=ntpdate user=root state=present backup=yes'

備注:

?? 被管控主機需要先安裝ntpdate軟件包

?? 如果時間單位(minutehourday等)設定的參數都未指定時,任務計劃的時間默認設定為“* * * * *”,表示每分鐘都會執行一次任務計劃

?? 參數backup:如果此參數的值設置為yes,那么當修改或者刪除對應的任務計劃時,會先對任務計劃進行備份,然后再對任務計劃進行修改或者刪除,cron模塊會在被管控主機的/tmp目錄中創建備份文件,以crontab開頭且隨機加入一些字符,具體的備份文件名稱會在返回信息的backup_file字段中看到

示例2:在所有被管控主機執行任務計劃,要求以testuser用戶身份、每月的4號和每周一至周三的上午10點輸出一次Hello World

# ansible all -m cron -a 'minute=0 hour=10 day=4 month=* weekday=1-3 job="echo Hello World" name=echo user=testuser state=present'

備注:CentOS 7.6echo路徑為:/usr/bin/echoCentOS 6.10echo路徑為:/bin/echo

示例3:所有被管控主機刪除名稱為ntpdate的任務計劃

# ansible all -m cron -a 'name=ntpdate state=absent'

示例4:所有被管控主機創建名稱為“test special time”的任務計劃,任務將在重啟時執行,任務內容為輸出test字符

# ansible all -m cron -a 'name="test special time" special_time=reboot job="echo test" state=present'

備注:參數special_time的可選值包括reboot(重啟時)、yearly(每年)、annually(每年,與yearly相同)、monthly(每月)、weekly(每周)、daily(每天)和hourly(每小時)

11、yum:使用yum包管理器管理軟件包

查看參數:# ansible-doc -s yum

示例1:所有被管控主機以yum方式安裝最新版本的httpdphp

# ansible all -m yum -a 'name=httpd,php state=latest'

備注:參數state的可選值包括安裝(present=installedlatest)和卸載(absent=removed

示例2:被管控主機192.168.1.144中安裝版本為1.12.2nginx

# ansible 192.168.1.144 -m yum -a 'name=nginx-1.12.2 state=present'

備注:CentOS 6.10 epel源中nginx的版本為1.10.2CentOS 7.6 epel源中nginx的版本為1.12.2

示例3:所有被管控主機安裝/software目錄下的rpm軟件包

# ansible all -m yum -a 'name=/software/jdk-8u212-linux-x64.rpm state=present'

備注:rpm軟件包在被管控主機,而非Ansible主機

示例4:所有被管控主機以yum方式刪除php

# ansible all -m yum -a 'name=php state=absent'

示例5:所有被管控主機安裝Development Tools軟件包組:

# ansible all -m yum -a 'name="@Development Tools" state=present'

備注:使用命令# yum grouplist查看軟件包組信息

12、service:管理服務

查看參數:# ansible-doc -s service

示例1:所有被管控主機啟動httpd服務,并設置開機自啟

# ansible all -m service -a 'name=httpd state=started enabled=yes'

備注:參數state的可選值包括startedstoppedrestartedreloaded

示例2:所有被管控主機停止httpd服務,并取消開機自啟

# ansible all -m service -a 'name=httpd state=stopped enabled=no'

13、script:先將Ansible主機中的腳本傳輸至被管控主機,再執行

查看參數:# ansible-doc -s script

示例:所有被管控主機執行Ansible主機中的/scripts/test.sh腳本,目標是在所有被管控主機的/tmp目錄中創建名稱為script.txt的文件

# cat /scripts/test.sh

#!/bin/bash

touch script.txt

# ansible all -m script -a 'chdir=/tmp /scripts/test.sh'

備注:

?? 腳本在Ansible主機中,而非被管控主機,無需手動復制腳本至被管控主機后再執行

?? script模塊后直接加需要執行的腳本文件,可以無需加key=value格式的參數列表

14、setup:收集被管控主機信息

查看參數:# ansible-doc -s setup

示例1:收集所有被管控主機的所有信息

# ansible all -m setup | less

示例2:收集所有被管控主機的操作系統發行版信息

# ansible all -m setup -a 'filter=ansible_distribution'

備注:在playbook里經常會用到的一個參數gather_facts就與setup模塊相關

15、template:將模板文件復制至被管控主機

查看參數:# ansible-doc -s template

示例:將redis模板文件redis.conf.j2復制至所有被管控主機

# ansible all -m template -a 'src=redis.conf.j2 dest=/etc/redis.conf owner=redis group=root mode=0640 backup=yes'

16、unarchive:將歸檔文件解壓后復制至被管控主機指定路徑

查看參數:# ansible-doc -s unarchive

示例:將Ansible主機中/software目錄下的apache-tomcat-8.5.40.tar.gz解壓至所有被管控主機的/usr/local目錄下,無需復制apache-tomcat-8.5.40.tar.gz至所有被管控主機

# ansible all -m unarchive -a 'src=/software/apache-tomcat-8.5.40.tar.gz dest=/usr/local/'

?17、debug:執行命令過程中打印信息

查看參數:# ansible-doc -s debug

示例:輸出“hello world”信息

# ansible all -m debug -a 'msg="hello world"'

18、reboot:重啟被管控主機

查看參數:# ansible-doc -s reboot

示例:重啟所有被管控主機

# ansible all -m reboot

備注:reboot模塊后無需加key=value格式的參數列表

19、systemd:管理服務

查看參數:# ansible-doc -s systemd

示例1:被管控主機192.168.1.144重啟httpd服務,并設置開機自啟

# ansible 192.168.1.144 -m systemd -a 'name=httpd.service state=restarted enabled=yes'

備注:

?? systemd模塊僅可用于CentOS 7.x系統

?? 參數state的可選值包括startedstoppedrestartedreloaded

示例2:被管控主機192.168.1.144停止httpd服務,并取消開機自啟

# ansible 192.168.1.144 -m systemd -a 'name=httpd.service state=stopped enabled=no'

20、sysctl:管理sysctl.conf

查看參數:# ansible-doc -s sysctl

示例:將所有被管控主機中/etc/sysctl.conf文件的net.ipv4.ip_forward值設置為1

# ansible all -m sysctl -a 'sysctl_file=/etc/sysctl.conf name=net.ipv4.ip_forward value=1 reload=yes state=present'

21、selinux:改變SELinux的策略和狀態

查看參數:# ansible-doc -s selinux

示例:所有被管控主機禁用SELinux

# ansible all -m selinux -a 'state=disabled'

備注:被管控主機需要先安裝libselinux-python軟件包

22、stat:檢索文件或者文件系統的狀態

查看參數:# ansible-doc -s stat

示例:獲取所有被管控主機中/etc/fstab文件的狀態信息,包括atimectimemtimeuidgidinodemodemd5

# ansible all -m stat -a 'path=/etc/fstab get_checksum=yes checksum_algorithm=md5'

備注:參數checksum_algorithm的可選值包括md5sha1sha224sha256sha384sha512

23、replace:使用向后引用的正則表達式替換文件中特定字符串的所有實例

查看參數:# ansible-doc -s replace

示例:將被管控主機192.168.1.144/tmp/test.txt文件內的HELLOWORLD全部替換成helloworld

# cat /tmp/test.txt

HELLOWORLD

helloworld

HELLOworld

helloWORLD

# ansible 192.168.1.144 -m replace -a 'path=/tmp/test.txt regexp=HELLOWORLD replace=helloworld backup=yes'

24、lineinfile:管理文本文件中的行

查看參數:# ansible-doc -s lineinfile

示例:將所有被管控主機中/etc/selinux/config文件內的SELinux的值設置為disabled

# ansible all -m lineinfile -a 'path=/etc/selinux/config regexp="^SELINUX=" line="SELINUX=disabled" state=present backup=yes'

25、blockinfile:插入/更新/刪除由標記線包圍的文本塊

查看參數:# ansible-doc -s blockinfile

示例1:在所有被管控主機中/tmp/service.txt文件的開頭插入一行“hello world

# cat /tmp/service.txt

111111

222222

333333

# ansible all -m blockinfile -a 'path=/tmp/service.txt block="hello world" marker="#{mark} test echo" insertbefore=BOF state=present backup=yes'

備注:BOF --> Begin Of File

示例2:在所有被管控主機中/tmp/test.txt文件的末尾插入一行“welcome home

# cat /tmp/test.txt

111111

222222

333333

# ansible all -m blockinfile -a 'path=/tmp/test.txt block="welcome home" marker="#{mark} test" insertafter=EOF state=present backup=yes'

備注:EOF --> End Of File,默認操作就是將文本塊插入到文檔的末尾,可以不加參數EOF

示例3:在所有被管控主機中/tmp/script.sh文件的“#!/bin/sh”開頭的行后插入HELLO WORLD

# cat /tmp/script.sh

#!/bin/sh

?

#Licensed to the Apache Software Foundation (ASF) under one or more

# ansible all -m blockinfile -a 'path=/tmp/script.sh block="HELLO WORLD" marker="#{mark} test reg" insertafter="^#!/bin/sh" state=present backup=yes'

26、yum_repository:增加或刪除yum倉庫

查看參數:# ansible-doc -s yum_repository

示例:在所有被管控主機中創建如下yum倉庫

# cat /etc/yum.repos.d/MariaDB.repo? ? ? ? ? ? ? ? ? ? ? ? ? //倉庫名稱由file參數定義

[mariadb]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //name參數定義

name=MariaDB Repo? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //description參數定義

baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/

gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB

gpgcheck=1

enabled=1

# ansible all -m yum_repository -a 'file=MariaDB name=mariadb description="MariaDB Repo" baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/ gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=yes enabled=yes owner=root group=root mode=0644 state=present'

27、mysql_user:增加或刪除MySQL數據庫中的用戶

查看參數:# ansible-doc -s mysql_user

示例:在被管控主機的MySQL數據庫中通過root@localhost用戶,密碼123456,增加testuser@%用戶,密碼654321,并對所有庫的所有表擁有任何權限

# ansible all -m mysql_user -a 'login_host=localhost login_user=root login_password=123456 name=testuser host="%" password=654321 priv=*.*:all state=present'


轉載于:https://blog.51cto.com/qiuyue/2384259

總結

以上是生活随笔為你收集整理的CentOS 7.6安装使用Ansible(二):Ansible常用的27个模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。