Ansible4 Ad hoc與命令執行模組

2022-06-26 00:57:15 字數 2359 閱讀 1263

目錄命令執行模組

ad-hoc 是指ansible下臨時執行的一條命令,並且不需要儲存的命令,對於複雜的命令會使用playbook。ad-hoc的執行依賴於模組,ansible官方提供了大量的模組。 如:command、raw、shell、file、cron等,具體可以通過ansible-doc -l 進行檢視 。可以使用ansible-doc -s module來檢視某個模組的引數,也可以使用ansible-doc help module來檢視該模組更詳細的資訊。

乙個ad-hoc命令的執行,需要按以下格式進行執行:

ansible 主機或組 -m 模組名 -a '模組引數'  ansible引數
ansible在執行ad-hoc的時候,需要使用遠端管理機上的乙個使用者身份,預設這個使用者是root,而在實際生產環境中,不建議直接使用root,而推薦使用乙個普通使用者,需要配置該普通使用者可通過sudo提權。

下面是乙個配置示例:

在被管理機上建立乙個普通使用者ansible,並配置sudo提權:

# 建立ansible使用者

useradd ansible

# 設定ansible使用者可免密提權

vim /etc/sudoers.d/ansible

ansible all=(all) nopasswd:all

chmod 400 /etc/sudoers.d/ansible

mkdir /home/ansible/.ssh

chown ansible.ansible /home/ansible/.ssh

chmod 700 /home/ansible/.ssh

在管理端修改ansible.cfg配置檔案如下:

[default]

remote_user = ansible

ask_pass = false

[privilege_escalation]

become=true

become_method=sudo

become_user=root

become_ask_pass=false

將管理端使用者的id_rsa.pub複製到被管理端的/home/ansible/.ssh//home/ansible/.ssh/authorized_keys檔案中,並設定該檔案的許可權為400

# 管理端執行:

ssh-copy-id -i .ssh/id_rsa.pub [email protected]

需要說明的是,通過上面的操作,需要為ansible使用者先建立密碼,在實際生產當中,不建議為該使用者設定密碼。可在安裝系統時,提前將管理端公鑰直接寫入到被管理節點的ansible使用者下

命令執行模組包含如下 四個模組:

raw模組和comand、shell 模組不同的是其沒有chdir、creates、removes引數,chdir引數的作用就是先切到chdir指定的目錄後,再執行後面的命令,這在後面很多模組裡都會有該引數 。

command模組包含如下選項:

chdir示例:

# 三個命令都會返回執行成功的狀態。不過實際上只有前兩個檔案會被建立成功。使用raw模組的執行的結果檔案事實上也被正常建立了,不過不是在chdir指定的目錄,而是在當前執行使用者的家目錄

ansible 192.168.1.1 -m command -a 'chdir=/tmp/test.txt touch test.file'

ansible 192.168.1.1 -m shell -a 'chdir=/tmp/test.txt touch test2.file'

ansible 192.168.1.1 -m raw -a 'chdir=/tmp/text.txt touch test3.file'

creates與removes示例:

ansible 192.168.1.1 -a 'creates=/tmp/server.txt uptime' #當/tmp/server.txt檔案存在時,則不執行uptime指令

ansible 192.168.1.1 -a 'removes=/tmp/server.txt uptime' #當/tmp/server.txt檔案不存在時,則不執行uptime指令

示例:

#/bin/bash

ifconfig

df -ht

# 執行ansible指令:

ansible 10.212.52.252 -m script -a 'script.sh'

Ansible之四 Ad hoc與命令執行模組

ad hoc 是指ansible下臨時執行的一條命令,並且不需要儲存的命令,對於複雜的命令會使用playbook。ad hoc的執行依賴於模組,ansible官方提供了大量的模組。如 command raw shell file cron等,具體可以通過ansible doc l 進行檢視 可以使用...

自動化運維工具 ansible系列命令

列出所有已安裝的galaxy ansible galaxy list 安裝galaxy ansible galaxy install geerlingguy.redis 刪除galaxy 推送命令至遠端,效率無線提公升,對運維要求較高管理加密解密yml檔案ansible vault create d...

ansible遇到的需求與相關命令實現

在ansible主機執行命令,保證只執行一次 使用delegate to name merge cache shell python home om om manager script logfetcher merge cache.py run once true delegate to local...