03-常用模塊(三)-系統(tǒng)模塊

Ansible

Ansible version : 2.6.2

常用模塊(三)

系統(tǒng)模塊

系統(tǒng)模塊詳細地址:https://docs.ansible.com/ansible/latest/modules/list_of_system_modules.html

  • cron
  • hostname
  • ping
  • user
  • service
  • systemd

模塊:cron

概述
  • 【cron】模塊管理crontab和環(huán)境變量條目。允許創(chuàng)建環(huán)境變量和命名的crontab條目,更新或刪除它們。
  • 管理環(huán)境變量時:不添加注釋行,但當(dāng)模塊需要查找/檢查狀態(tài)時,使用name參數(shù)來查找環(huán)境變量定義行。
  • 管理crontab作業(yè)時,該模塊包含一行,其中包含crontab條目的描述為"#Ansible: <name>"或者對應(yīng)于傳遞給模塊的name將來Ansible /模塊調(diào)用都使用這個條目來查找/檢查狀態(tài)。name參數(shù)應(yīng)該是唯一的,更改name值將導(dǎo)致創(chuàng)建一個新的cron任務(wù)(或刪除另一個任務(wù))。
  • 使用%等符號時,必須正確轉(zhuǎn)義它們。
參數(shù)
參數(shù)(*必選) 默認 注釋
backup no 如果設(shè)置,則在修改之前備份crontab,備份位置則由返回值里面的backup_file輸出
cron_file 如果指定,使用這個文件來替代一個單獨用戶的crontab。如果這是一個相對路徑,他將通過/etc/cron.d解釋(如果絕對路徑,一般是/etc/crontab)。許多發(fā)型版本期望名字部分僅由大寫和小寫字母,數(shù)字,下劃線和連字符組成。如果使用該參數(shù),則必須指定用戶
day * 哪天執(zhí)行計劃任務(wù)
disabled no 在crontab里面禁用(注釋)作業(yè)
env no 如果設(shè)置,則管理crontab的環(huán)境變量。新變量添加在crontab之上。 namevalue參數(shù)是環(huán)境變量的名稱和值。
hour * 哪小時執(zhí)行計劃任務(wù)
insertafter state=presentenv一起使用。如果指定,則在聲明指定的環(huán)境變量之后插入環(huán)境變量。
insertbefore state=presentenv一起使用。如果指定,則在聲明指定的環(huán)境變量之前插入環(huán)境變量。
job 要執(zhí)行的命令或者如果設(shè)置了env,則為環(huán)境變量的值。該命令不應(yīng)包含空格。就像state=present一樣。
minute * 哪分鐘計劃任務(wù)
month * 哪月執(zhí)行計劃任務(wù)
name crontab條目的描述,如果設(shè)置了env,則為環(huán)境變量的名稱。需要state=absent。注意name沒有設(shè)置env并且state=present,一個新的條目始終創(chuàng)建,而不管已經(jīng)存在的。
reboot no 如果任務(wù)必須在重啟之后執(zhí)行。該選項已棄用。用戶應(yīng)該使用special_time
special_time 特殊的時間規(guī)范的昵稱。選項: reboot yearly annually monthly weekly daily hourly
state present 確保作業(yè)或環(huán)境變量存在或不存在。
user root 修改crontab的特定用戶
weekday * 哪周執(zhí)行計劃任務(wù)
例子
playbook

指定時間執(zhí)行

- name: Ensure a job that runs at 2 and 5 exists. Creates an entry like "0 5,2 * * ls -alh > /dev/null"
  cron:
    name: "check dirs"
    minute: "0"
    hour: "5,2"
    job: "ls -alh > /dev/null"

刪除一個舊條目

- name: 'Ensure an old job is no longer present. Removes any job that is prefixed by "#Ansible: an old job" from the crontab'
  cron:
    name: "an old job"
    state: absent

重啟之后,執(zhí)行

- name: Creates an entry like "@reboot /some/job.sh"
  cron:
    name: "a job for reboot"
    special_time: reboot
    job: "/some/job.sh"

創(chuàng)建環(huán)境變量

- name: Creates an entry like "PATH=/opt/bin" on top of crontab
  cron:
    name: PATH
    env: yes
    value: /opt/bin

在聲明的指定變量之后

- name: Creates an entry like "APP_HOME=/srv/app" and insert it after PATH declaration
  cron:
    name: APP_HOME
    env: yes
    value: /srv/app
    insertafter: PATH

環(huán)境變量變量

- name: Removes "APP_HOME" environment variable from crontab
  cron:
    name: APP_HOME
    env: yes
    state: absent

模塊:hostname

概要
  • 設(shè)置系統(tǒng)的主機名,支持大多數(shù)操作系統(tǒng)/分發(fā),包括使用systemd的操作系統(tǒng)。
  • 這個模塊不會修改/etc/hosts,可以使用【template】或者【replace】模塊修改。
  • Windows, HP-UX ,AIX不支持。
參數(shù)
參數(shù)(*必選) 默認 注釋
* name 主機名
例子
playbook
- hostname:
    name: web01

模塊:ping

概要
  • 這個模塊總是在成功之后返回pong。在playbook中毫無意義。但是在使用/usr/bin/ansible來確認登錄可用和配置了可用的python
  • 這個不是IMCP的ping,只是遠端的python簡單的測試模塊
  • 對于windows目標(biāo),使用win_ping
  • 對于網(wǎng)絡(luò)目標(biāo),使用net_ping
參數(shù)
參數(shù)(*必選) 默認 注釋
data pong 要返回ping返回值的數(shù)據(jù)。如果此參數(shù)設(shè)置為crash,則模塊將導(dǎo)致異常。
例子
playbook

設(shè)置data值為crash

# Induce an exception to see what happens
- ping:
    data: crash
返回值
關(guān)鍵字 返回/類型 描述
ping success/字符串 data參數(shù)提供的值

模塊:user

概述
  • 管理用戶賬戶和用戶屬性
  • 對于windows主機,使用win_user模塊
參數(shù)
參數(shù)(*必選) 默認 注釋
append no 如果為yes,添加用戶到指定組,如果為no,則僅將用戶添加到組中指定的組,并將其從所有其他組中刪除。
comment (可選)設(shè)置用戶帳戶的描述(也稱為GECOS)。
create_home yes 除非設(shè)置為no,否則將在創(chuàng)建帳戶或主目錄不存在時為用戶創(chuàng)建主目錄。從ansible 2.5版本開始,從createhome變?yōu)?code>create_home
expires 設(shè)置用戶過期時間。它將在不支持此功能的平臺上被忽略。當(dāng)前支持GNU/Linux, FreeBSD, and DragonFlyBSD。從版本2.6開始,您可以刪除指定負值的到期時間。當(dāng)前支持 GNU/Linux and FreeBSD
force no 當(dāng)state=absent的時候會受到影響,它強制刪除支持平臺上的用戶和關(guān)聯(lián)目錄。與userdel --force行為一樣。
generate_ssh_key no 是否為相關(guān)用戶生成SSH密鑰。不會覆蓋已存在的SSH key。
group (可選)設(shè)置用戶的主要組(取一個組名)
groups 將添加用戶組列表。當(dāng)設(shè)置為空字符串''、null或者~,用戶將從除主要組之外的所有組中刪除。在yaml中~意思是 null
hidden yes 僅限D(zhuǎn)arwin/OS X,可選地將用戶隱藏在登錄窗口和系統(tǒng)首選項中。 如果使用系統(tǒng)選項,則默認值為“True”。
home 可選設(shè)置用戶的家目錄
local no 強制在實現(xiàn)它的平臺上使用“本地”命令備選方案。當(dāng)您想要操作本地用戶時,這在使用集中身份驗證的環(huán)境中很有用。 它使用luseradd而不是useradd。
login_class (可選)設(shè)置用戶的登錄類,這是大多數(shù)BSD操作系統(tǒng)的一項功能。
move_home no 當(dāng)使用home=則設(shè)置為yes,嘗試移動用戶的舊目錄到指定目錄,新目錄必須不存在并且舊目錄必須存在。
* name 要創(chuàng)建,刪除或修改的用戶的名稱。
non_unique no (可選)與-u選項一起使用時,此選項允許將用戶ID更改為非唯一值。
password (可選)將用戶密碼設(shè)置為此加密值。在Darwin / OS X系統(tǒng)上,此值必須是明文。
password_lock 鎖定密碼(usermod -L,pw lock,usermod -C)。但是實現(xiàn)在不同平臺上有所不同.此選項并不總是意味著用戶無法通過其他方法登錄。此選項不會禁用用戶,只會鎖定密碼。請勿在同一任務(wù)中更改密碼。目前支持Linux,F(xiàn)reeBSD,DragonFlyBSD,NetBSD。
remove no 當(dāng)state=absent時生效,它試圖刪除與用戶關(guān)聯(lián)的目錄。與userdel --remove行為相似。
seuser (可選)在啟用selinux的系統(tǒng)上設(shè)置seuser類型(user_u)
shell (可選)設(shè)置用戶shell。在Mac OS X上,在2.5版之前,非系統(tǒng)用戶的默認shell是/usr/bin/false。從2.5開始,Mac OS X上非系統(tǒng)用戶的默認shell是/ bin / bash。
skeleton (可選)設(shè)置主目錄。需要create_home選項
ssh_key_bits ssh-keygen (可選)指定要創(chuàng)建的SSH密鑰的位數(shù)。
ssh_key_comment ansible-generated on $HOSTNAME (可選)定義SSH密鑰的注釋。
ssh_key_file .ssh/id_rsa (可選)指定SSH密鑰文件名。如果這是一個相對文件名,那么它將相對于用戶的主目錄。
ssh_key_passphrase 設(shè)置SSH密鑰的密碼。如果未提供密碼,則SSH密鑰將默認為沒有密碼。
state absent 帳戶是否應(yīng)該存在,如果狀態(tài)與陳述的不同則采取行動。
system no 當(dāng)創(chuàng)建賬戶state=present,將此設(shè)置為yes會使用戶成為系統(tǒng)帳戶。無法在現(xiàn)有用戶上更改此設(shè)置。
uid (可選)設(shè)置用戶的UID。
update_password always always:如果密碼不同,總會更新密碼。on_create只會為新創(chuàng)建的用戶設(shè)置密碼。
例子

創(chuàng)建指定uid以及主要的admin組的用戶

- name: Add the user 'johnd' with a specific uid and a primary group of 'admin'
  user:
    name: johnd
    comment: John Doe
    uid: 1040
    group: admin

追加組

- name: Add the user 'james' with a bash shell, appending the group 'admins' and 'developers' to the user's groups
  user:
    name: james
    shell: /bin/bash
    groups: admins,developers
    append: yes

刪除用戶

- name: Remove the user 'johnd'
  user:
    name: johnd
    state: absent
    remove: yes

創(chuàng)建2048位的ssh key

- name: Create a 2048-bit SSH key for user jsmith in ~jsmith/.ssh/id_rsa
  user:
    name: jsmith
    generate_ssh_key: yes
    ssh_key_bits: 2048
    ssh_key_file: .ssh/id_rsa

設(shè)置過期時間

- name: Added a consultant whose account you want to expire
  user:
    name: james18
    shell: /bin/zsh
    groups: developers
    expires: 1422403387

刪除過期時間

- name: starting at version 2.6, modify user, remove expiry time
  user:
    name: james18
    expires: -1

模塊:service

概述
  • 控制遠程主機上的服務(wù)。支持的init系統(tǒng)包括BSD init,OpenRC,SysV,Solaris SMF,systemd,upstart。
  • 對于Windows目標(biāo),請改用【win_service】模塊。
參數(shù)
參數(shù)(*必選) 默認 注釋
arguments 在命令行上提供了其他參數(shù)
enabled 服務(wù)是否應(yīng)該在啟動時啟動。至少需要state和enabled中的一個。可選值yes/no
* name service名稱
pattern 如果服務(wù)沒有響應(yīng)status命令,將要查找的子字符串命名為ps命令的輸出中的子字符串作為狀態(tài)結(jié)果的替代。如果找到該字符串,則假定該服務(wù)正在運行。
runlevel default 僅適用于OpenRC init腳本(例如:Gentoo)。此服務(wù)所屬的運行級別。
sleep 如果正在重新啟動服務(wù),則在停止和啟動之間休眠多少秒,這有助于解決在發(fā)出停止進程信號后立即退出的錯誤行為的init腳本。
state started/stopped是冪等操作,除非必要,否則不會執(zhí)行。restarted總會執(zhí)行。reloaded總會執(zhí)行。至少需要state和enabled中的一個。注意即使服務(wù)沒啟動reloadedj也將會啟動服務(wù)。甚至你選擇的init系統(tǒng)不正常。
use auto 【service】模塊實際上使用系統(tǒng)特定的模塊,通常通過自動檢測,此設(shè)置可以強制特定模塊。通常它使用'ansible_service_mgr'事實的值,并在找不到匹配時回退到舊的'service'模塊。

例子

如果沒啟動,則啟動服務(wù)

- name: Start service httpd, if not running
  service:
    name: httpd
    state: started

重啟服務(wù)

- name: Restart service httpd, in all cases
  service:
    name: httpd
    state: restarted

啟用服務(wù)

- name: Enable service httpd, and not touch the running state
  service:
    name: httpd
    enabled: yes

基于進程啟動

- name: Start service foo, based on running process /usr/bin/foo
  service:
    name: foo
    pattern: /usr/bin/foo
    state: started

帶參數(shù)重啟

- name: Restart network service for interface eth0
  service:
    name: network
    state: restarted
    args: eth0

模塊:systemd

概述
  • 控制遠程主機上的systemd服務(wù)。
參數(shù)
參數(shù)(*必選) 默認 注釋
daemon_reload no 在執(zhí)行任何其他操作之前運行daemon-reload,以確保systemd已讀取任何更改。
enabled 服務(wù)是否應(yīng)該在啟動時啟動。至少需要state和enabled中的一個??蛇x值:yes/no
force 是否覆蓋現(xiàn)有符號鏈接??蛇x值:yes/no
masked 無論是否應(yīng)該屏蔽unit,屏蔽uit是不可能啟動的??蛇x值:yes/no
name 服務(wù)名稱。在chroot環(huán)境中使用時,您總是需要指定全名,即(crond.service)。
no_block no 不要同步等待請求的操作完成。排隊的工作將在沒有Ansible阻止的情況下繼續(xù)完成。
state started/stopped是冪等操作,除非必要,否則不會運行命令。restarted啟動將始終彈出服務(wù)。reloaded將始終重新加載。
user no 運行systemctl,與調(diào)用用戶的服務(wù)管理器對話,而不是與系統(tǒng)的服務(wù)管理器對話。
注意
  • 自從2.4開始,以下選項之一state,enabled,maskeddaemon_reload,除daemon_reloa'之外的所有內(nèi)容都需要name。
  • 在2.4之前,你總是需要name
例子

起服務(wù)

- name: Make sure a service is running
  systemd:
    state: started
    name: httpd

重啟服務(wù)前先reload

- name: restart service cron on centos, in all cases, also issue daemon-reload to pick up config changes
  systemd:
    state: restarted
    daemon_reload: yes
    name: crond

強制重載配置

- name: just force systemd to reread configs (2.4 and above)
  systemd:
    daemon_reload: yes
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容