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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Chpater2.3 执行AD HOC命令

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Chpater2.3 执行AD HOC命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2.3 執行AD HOC命令

2.3.1 目標

學完這一章節,學生能去執行一個單獨Ansible自動化任務通過ad hoc命令并且解釋一些 ad hoc命令案例。

2.3.2 執行AD HOC命令使用Ansible

一個ad hoc命令是一種方法快速執行Ansible任務,它們是簡單的,在線操作能被執行不需要寫一個playbook。

ad hoc命令非常有用對于快速測試和變更。例如,你能用一個ad hoc命令去確保一個特定的行存在于/etc/hosts文件中在一個主機組中,你能使用另一個ad hoc命令去高效的重啟一個服務在許多不同的目標主機中,或者確保一個特定的軟件包更新到最新版本。ad hoc命令是非常有用去執行簡單的任務

2.3.3 執行Ad Hoc命令

ansible host-pattern -m module [-a 'module arguments'] [-i inventory]
  • host-pattern指定在哪些受管主機上執行ad hoc命令,它能指定受管主機或主機組在清單文件中
  • 你經常看到結合–list-hosts的用法,展示了哪些主機被匹配。
  • 選項-i可以指定一個不同的inventory文件位置,而不是用配置文件中默認的清單文件
  • 選項-m指定一個模塊的名稱,模塊是一個小的程序被執行去實現你的任務,一些模塊不需要附加的信息,但其他模塊需要附加的參數去指定操作的細節,-a選項增加了一些參數,放在單引號中。

2.3.4 使用Ad Hoc命令執行任務

模塊是ad hoc命令用來完成任務的工具,Ansible提供了數百個模塊執行不同的事情。

ansible-doc -l 命令列出了所有的模塊被安裝在系統中的,你能使用ansible-doc去查看指定模塊的文檔,并且找到模塊使用的一些參數。

下表中列出了一些常用的模塊

MODULE CATEGORY MODULES
Files modules
copy:拷貝一個本地文件到受管主機
file:設定文件的權限和其他屬性
lineinfile:確保指定的行在或不在文本中
synchronize:使用rsync同步內容
Software package modules
package:管理數據包使用操作系統自帶的包管理器
yum:管理數據包使用YUM包管理器
dnf:管理數據包使用dnf包管理器
pip:python包管理器
System modules
firewalld:使用firewalld管理任意的端口或服務
reboot:重啟主機
service:管理服務
user:增加,移除,管理用戶賬號
Net Tools modules
get_url:下載文件通過HTTP,HTTPS or FTP
nmcli:Manage networking
uri:與web服務交互

大多數模塊攜帶參數,在modules文檔中找到可用的參數列表。Ad hoc給模塊傳遞參數使用-a選項。如果多個參數需要被指定,把他們放在單引號中,通過空格隔開。

[sysadmin@ansible security]$ ansible 192.168.160.14 -m user -a 'name=newbie uid=4000 state=present' 192.168.160.14 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": true,"comment": "","create_home": true,"group": 4000,"home": "/home/newbie","name": "newbie","shell": "/bin/bash","state": "present","system": false,"uid": 4000 }

大多數模塊是冪等性的,這意味著模塊能被多次安全的執行,如果受管主機已經是正確的狀態,模塊將不執行任何操作。如果你再次執行了先前的ad hoc命令,它將不會報告任何改變。

[sysadmin@ansible security]$ ansible 192.168.160.14 -m user -a 'name=newbie uid=4000 state=present'192.168.160.14 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"append": false,"changed": false,"comment": "","group": 4000,"home": "/home/newbie","move_home": false,"name": "newbie","shell": "/bin/bash","state": "present","uid": 4000 }

2.3.5 執行任意命令在受管主機上

command模塊允許管理員執行任意命令在受管主機上,執行的命令被指定作為一個參數通過-a選項,如下例:

[sysadmin@ansible security]$ ansible 192.168.160.14 -m command -a hostname192.168.160.14 | CHANGED | rc=0 >> rhel6-update-server

上面的ad hoc命令返回了兩行輸出,第一行是一個狀態報告,展示了執行ad hoc命令的受管主機,以及這次操作的執行結果。第二行是遠程執行命令的輸出。

為了增加ad hoc命令輸出結果的可讀性及更容易解析,管理員發現每臺主機輸出為一個單獨的行是有用的,使用-o選項去展示輸出到一個單獨的行。

[sysadmin@ansible security]$ ansible 192.168.160.14 -m command -a hostname -o192.168.160.14 | CHANGED | rc=0 | (stdout) rhel6-update-server

command模塊允許管理員快速執行遠程命令在受管主機上,這些命令不被處理通過受管主機的shell。同樣地,它們不能接入shell環境變量或執行shell操作,比如重定向和管道符。

對于命令需要shell處理的場景,管理員可以使用shell模塊。和command不同的是,shell模塊指定的命令被執行通過受管主機上的shell程序。因此,shell環境變量或執行shell操作,比如重定向和管道符都是可用的。

利用command和shell模塊分別執行系統內置的Bash命令set,它將執行成功通過shell模塊。

[sysadmin@ansible security]$ ansible localhost -m command -a set [WARNING]: log file at /var/log/ansible.log is not writeable and we cannot create it, abortinglocalhost | FAILED | rc=2 >> [Errno 2] No such file or directory [sysadmin@ansible security]$ ansible localhost -m shell -a set [WARNING]: log file at /var/log/ansible.log is not writeable and we cannot create it, abortinglocalhost | CHANGED | rc=0 >> BASH=/bin/sh ...output omitted...

無論command或shell模塊都需要受管主機安裝python環境,第三個模塊raw,能執行命令直接使用遠程的shell,繞過模塊子系統。這是非常有用的,用來管理沒有python環境的設備,如網絡路由器。它也能被用作安裝python在目標主機。

大多數情況下,最佳實踐避免使用command,shell和raw模塊。

2.3.5 配置連接FOR AD HOC命令

管理主機連接和權限提升的指令能被配置都Ansible配置文件中,它們也被定義作為ad hoc的命令行選項。當定義了選項在ad hoc命令中,它們的優先級高于配置文件中的指令。下表中展示了相似的命令行選項對比配置文件中的指令

配置文件指令命令行選項
inventory-i
remote_user-u
become–become,-b
become_method–become-method
become_user–becom-user
become_ask_pass–ask-become-pass,-K

這些選項也可以通過ansible --help命令查詢

[sysadmin@ansible ~]$ ansible --help [WARNING]: log file at /var/log/ansible.log is not writeable and we cannot create it, abortingusage: ansible [-h] [--version] [-v] [-b] [--become-method BECOME_METHOD][--become-user BECOME_USER] [-K] [-i INVENTORY] [--list-hosts][-l SUBSET] [-P POLL_INTERVAL] [-B SECONDS] [-o] [-t TREE] [-k][--private-key PRIVATE_KEY_FILE] [-u REMOTE_USER][-c CONNECTION] [-T TIMEOUT][--ssh-common-args SSH_COMMON_ARGS][--sftp-extra-args SFTP_EXTRA_ARGS][--scp-extra-args SCP_EXTRA_ARGS][--ssh-extra-args SSH_EXTRA_ARGS] [-C] [--syntax-check] [-D][-e EXTRA_VARS] [--vault-id VAULT_IDS][--ask-vault-pass | --vault-password-file VAULT_PASSWORD_FILES][-f FORKS] [-M MODULE_PATH] [--playbook-dir BASEDIR][-a MODULE_ARGS] [-m MODULE_NAME]pattern

總結

以上是生活随笔為你收集整理的Chpater2.3 执行AD HOC命令的全部內容,希望文章能夠幫你解決所遇到的問題。

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