目錄命令執行模組
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...