ansible的參數與基本使用方法(二)

1、ansible的配置文件介紹

  版本:ansible 2.4.2.0html

  一、配置文件web

    默認路徑/etc/ansible/ansible.cfg,這些參數影響到咱們後面的使用,咱們這裏簡單看幾個比較經常使用的參數。api

    1.一、這裏能夠參考http://www.51niux.com/?id=47這篇博客,樓主寫的仍是很清楚。 緩存

    1.二、官方文檔https://docs.ansible.com/ansible/latest/index.html安全

#inventory      = /etc/ansible/hosts  #被控制的主機配置文件
#library        = /usr/share/my_modules/   ##Ansible默認搜尋模塊的位置
#remote_tmp     = ~/.ansible/tmp  #遠程主機緩存目錄
#local_tmp      = ~/.ansible/tmp   #本地緩存目錄
#forks          = 5     ##這個選項設置在與主機通訊時的默認並行進程數.從Ansible 1.3開始,fork數量默認自動設置爲主機數量或者潛在的主機數量, 這將直接控制有多少網絡資源活着cpu能夠被使用.不少用戶把這個設置爲50,有些設置爲500或者更多.若是你有不少的主機, 高數值將會使得跨主機行爲變快.默認值比較保守.
#poll_interval  = 15    ##對於Ansible中的異步任務, 這個是設置定義,當具體的poll interval 沒有定義時,多少時間回查一下這些任務的狀態, 默認值是一個折中選擇15秒鐘.這個時間是個回查頻率和任務完成叫回頻率和當任務完成時的迴轉頻率的時鐘。
#sudo_user      = root  #默認sudo用戶
#ask_sudo_pass = True  #默認sudo用戶是否須要輸入密碼
#ask_pass      = Fales    #每次執行都須要詢問ssh密碼
#remote_port    = 22   #被控主機默認端口
#module_lang    = C   #ansible默認語言
timeout = 10  #默認ssh嘗試鏈接超時時間

  二、ansible的語法格式服務器

標準格式:ansible <pattern_goes_here> -m <module_name> -a <arguments>

  #pattern_goes_here: 能夠是某一個主機IP(如192.168.1.128)或者是hosts中的組名(web.server),192.168.1.*表明全部可是前提是hosts文件裏面已經作好了定義如192.168.1.[1:254]這樣就是執行的192.168.1.1-192.168.1.254,同時制定多個組或者多個ip使用;分割,用!表示非(如web.server:!data.server表示在web.server主機組裏面可是不在data.server主機組裏面的主機IP),用&表示交集部分,能夠指定分組的下標或切片(如web.server[1],就是這個主機組第二個主機IP,須要主機的是超過了範圍就沒法匹配了),能夠用~開頭來使用正則(如:~(web|data).*\.server\.com)。須要注意的是若是系統用的是zsh,有這些相似於*,!,[等這些特殊符號須要用單引號包裹。網絡

  #module_name:  要執行的模塊名稱,固然 -m 模塊名稱 這裏在語句中是可選的,默認是command,如ansible all -a "/bin/echo hello"併發

  #arguments:要執行的命令語句ssh

  #其餘主要參數:異步

  -u username #指定ssh鏈接的用戶名,即執行後面命令的用戶

  -k #若是是普通用戶運行ansible,當須要root權限執行的話,-k參數用來輸入密碼

  -i inventory_file #指定所使用的用戶組所在的文件,默認是/etc/ansible/hosts

  -f number #指定併發數,併發量大的時候,提升該數字值,如 -f 10,默認是5個。

  -t  #輸出結果保存路徑

  -K  #sudo密碼(若是執行命令須要使用sudo用戶的話,須要-u執行用戶,用-K執行輸入sudo密碼)

  --private-key=key_name #若是是用非默認的id_rsa來當私鑰的話,能夠指定一個私鑰文件。

  3 ansible的遠程控制方式

    3.一、ansible之因此不須要安裝客戶端,是由於它使用ssh,因此這裏無非是作ssh信任或者執行輸入密碼。上篇咱們說了如何ssh信任(免除每次輸入密碼),下面咱們來講須要輸入密碼的方式,默認不輸入密碼提示拒絕訪問。這裏只須要加一個-k的參數,就能夠了,只要不重啓被控端,之心命令之後就不用加-k的參數了。

[root@localhost ansible]# ansible -i /etc/ansible/hosts test1 -a 'whoami' 
172.16.5.239 | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n", 
    "unreachable": true
}

    3.二、sudo使用方法

    這裏咱們建了一個test用戶,而且設置了密碼,模擬沒有root權限的狀況下,使用sudo權限。這裏須要注意的是否是-k,而是-K,命令前加sudo。(特別提示,默認狀況下普通用戶是沒有查看這個文件的權限)

[root@localhost ~]# ansible  test1 -a 'sudo cat /etc/shadow'  -u test  -K
SUDO password: 
 [WARNING]: Consider using 'become', 'become_method', and 'become_user' rather than running sudo

172.16.5.239 | SUCCESS | rc=0 >>
root:$6$Dzqyob0uMKLCpruY$APjNbel3k2uJmLXF9v44eh8fHH6To7TMcFP0oVP9ftxpluU/d95SblLDypFaU85VDmL9vR3jj3vyB/gDNlE3f/::0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
lp:*:17110:0:99999:7:::
sync:*:17110:0:99999:7:::
shutdown:*:17110:0:99999:7:::
halt:*:17110:0:99999:7:::
mail:*:17110:0:99999:7:::
operator:*:17110:0:99999:7:::
games:*:17110:0:99999:7:::
ftp:*:17110:0:99999:7:::
nobody:*:17110:0:99999:7:::
systemd-network:!!:17599::::::
dbus:!!:17599::::::
polkitd:!!:17599::::::
postfix:!!:17599::::::
sshd:!!:17599::::::
chrony:!!:17599::::::
test:$6$0ArITjlE$LBTf3a5bfIZcphKIFSMHFnd3e/ubAslekmA23deE/Pyw5fBajOCFui2oy02jLZgB8ZJ38qZh.wAuBUgROyLj00:17786:0:99999:7:::

  四、ansible的經常使用命令

   ansible --h  #--h參數你們都知道了啊,就是查看有哪些參數解釋幫助說明

Usage: ansible <host-pattern> [options]

Define and run a single task 'playbook' against a set of hosts

Options:
  -a MODULE_ARGS, --args=MODULE_ARGS
                        module arguments
  --ask-vault-pass      ask for vault password
  -B SECONDS, --background=SECONDS
                        run asynchronously, failing after X seconds
                        (default=N/A)
  -C, --check           don't make any changes; instead, try to predict some
                        of the changes that may occur
  -D, --diff            when changing (small) files and templates, show the
                        differences in those files; works great with --check
  -e EXTRA_VARS, --extra-vars=EXTRA_VARS
                        set additional variables as key=value or YAML/JSON, if
                        filename prepend with @
  -f FORKS, --forks=FORKS
                        specify number of parallel processes to use
                        (default=5)
  -h, --help            show this help message and exit
  -i INVENTORY, --inventory=INVENTORY, --inventory-file=INVENTORY
                        specify inventory host path or comma separated host
                        list. --inventory-file is deprecated
  -l SUBSET, --limit=SUBSET
                        further limit selected hosts to an additional pattern
  --list-hosts          outputs a list of matching hosts; does not execute
                        anything else
  -m MODULE_NAME, --module-name=MODULE_NAME
                        module name to execute (default=command)
  -M MODULE_PATH, --module-path=MODULE_PATH
                        prepend colon-separated path(s) to module library
                        (default=[u'/root/.ansible/plugins/modules',
                        u'/usr/share/ansible/plugins/modules'])
  --new-vault-id=NEW_VAULT_ID
                        the new vault identity to use for rekey
  --new-vault-password-file=NEW_VAULT_PASSWORD_FILES
                        new vault password file for rekey
  -o, --one-line        condense output
  -P POLL_INTERVAL, --poll=POLL_INTERVAL
                        set the poll interval if using -B (default=15)
  --syntax-check        perform a syntax check on the playbook, but do not
                        execute it
  -t TREE, --tree=TREE  log output to this directory
  --vault-id=VAULT_IDS  the vault identity to use
  --vault-password-file=VAULT_PASSWORD_FILES
                        vault password file
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable
                        connection debugging)
  --version             show program's version number and exit

  Connection Options:
    control as whom and how to connect to hosts

    -k, --ask-pass      ask for connection password
    --private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE
                        use this file to authenticate the connection
    -u REMOTE_USER, --user=REMOTE_USER
                        connect as this user (default=None)
    -c CONNECTION, --connection=CONNECTION
                        connection type to use (default=smart)
    -T TIMEOUT, --timeout=TIMEOUT
                        override the connection timeout in seconds
                        (default=10)
    --ssh-common-args=SSH_COMMON_ARGS
                        specify common arguments to pass to sftp/scp/ssh (e.g.
                        ProxyCommand)
    --sftp-extra-args=SFTP_EXTRA_ARGS
                        specify extra arguments to pass to sftp only (e.g. -f,
                        -l)
    --scp-extra-args=SCP_EXTRA_ARGS
                        specify extra arguments to pass to scp only (e.g. -l)
    --ssh-extra-args=SSH_EXTRA_ARGS
                        specify extra arguments to pass to ssh only (e.g. -R)

  Privilege Escalation Options:
    control how and which user you become as on target hosts

    -s, --sudo          run operations with sudo (nopasswd) (deprecated, use
                        become)
    -U SUDO_USER, --sudo-user=SUDO_USER
                        desired sudo user (default=root) (deprecated, use
                        become)
    -S, --su            run operations with su (deprecated, use become)
    -R SU_USER, --su-user=SU_USER
                        run operations with su as this user (default=None)
                        (deprecated, use become)
    -b, --become        run operations with become (does not imply password
                        prompting)
    --become-method=BECOME_METHOD
                        privilege escalation method to use (default=sudo),
                        valid choices: [ sudo | su | pbrun | pfexec | doas |
                        dzdo | ksu | runas | pmrun ]
    --become-user=BECOME_USER
                        run operations as this user (default=root)
    --ask-sudo-pass     ask for sudo password (deprecated, use become)
    --ask-su-pass       ask for su password (deprecated, use become)
    -K, --ask-become-pass
                        ask for privilege escalation password
參數

 

  ansible-doc -h  

Options:
  -a, --all             **For internal testing only** Show documentation for
                        all plugins.
  -h, --help            show this help message and exit
  -l, --list            列出可用的模塊
  -M MODULE_PATH, --module-path=MODULE_PATH
                        prepend colon-separated path(s) to module library
                        (default=[u'/root/.ansible/plugins/modules',
                        u'/usr/share/ansible/plugins/modules'])
  -s, --snippet        顯示指定模塊的劇本片斷,-s 模塊名稱 能夠查看某個模塊詳細的使用方法
  -t TYPE, --type=TYPE  Choose which plugin type (defaults to "module")
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable
                        connection debugging)
  --version             show program's version number and exit

  注意:這裏須要特別注意無論是靜態inventory,仍是動態生成的inventory,仍是咱們把重要信息寫入到的ansible.cfg,爲了安全起見,通常狀況下除了root用戶,其餘用戶不設置任何權限。一旦你的服務器清單落在黑客的手裏,那記得機器就直接至關於在互聯網上裸奔。

相關文章
相關標籤/搜索