02-第一條Ansible命令_ansible

來源:互聯網
上載者:User
一、編寫第一條命令

Ansible 安裝配置完畢,下面學習如何使用 Ansible。
就像學習程式設計語言那樣,先寫一個 hello world 樣本程式。我們也寫一個 Ansible 的 “hello world”:

ansible 192.168.128.83 -m ping

這條命令的意思是通過管理主機 ping 192.168.128.83
命令中的”-m ping”表示調用 ping 模組。由00節可知,Ansible 有很多模組,包括核心模組和自訂模組,不同的模組可以協助我們完成不同的工作。我們會根據實際情況使用各種模組,Ansible 基於這些模組完成實際的任務。

如果想要讓上述命令正常執行,則必須同時滿足兩個最基本的條件:
(1)Ansible 所在的管理主機可以通過ssh串連到被管理主機;
(2)被管理主機的IP地址等資訊已經添加到 Ansible 的”管理清單(Inventory)”中。

條件(1)是因為 Ansible 不用在管理主機上安裝 agent,但是它需要依賴ssh串連到被管理主機。條件(2)表明,即使 Ansible 所在的主機能夠通過 ssh 串連到被管理主機,仍然需要將被管理主機的 IP 位址、ssh 連接埠號碼等資訊添加到一個被稱作為”管理清單(Inventory)”的設定檔中,如果對應的主機資訊在 Ansible 的”清單”中不存在,那麼 Ansible 則無法操作對應主機。 二、執行第一條命令

在01節我們已經安裝好 Ansible 了,現在執行這個命令,看看效果:

[root@ansible-manager ~]# ansible 192.168.128.83 -m ping [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' [WARNING]: Could not match supplied host pattern, ignoring: 192.168.128.83

警告顯示,主機列表是空的。也就是上面說的第二個基本條件沒有滿足,雖然我們可以從管理節點 ping 通被管理節點,但是 Inventory 裡面沒有配置這一IP地址,Ansible 就無法正確執行。

下面在把 192.168.128.83 主機和 ssh 驗證資訊加入到 /etc/ansible/hosts (Inventory 檔案的位置)中:

192.168.128.83  ansible_port=22  ansible_user=root  ansible_ssh_pass=root

ansible_port :用於配置被管理主機上的sshd服務連接埠號碼,如果是預設的22,則可以省略。
ansible_user :用於配置串連到被管理主機時所使用的使用者名稱稱。
ansible_ssh_pass :用於配置被管理主機使用者的串連密碼。

再試一次,操作成功:

[root@ansible-manager ~]# ansible 192.168.128.83 -m ping192.168.128.83 | SUCCESS => {    "changed": false,     "ping": "pong"}

Ansible 還支援對主機添加別名,當主機存在別名時,我們可以通過主機的”別名”管理對應主機。
比如,192.168.128.83 這台主機的別名為 ansible-demo3,那麼,我們在配置清單時,可以進行如下配置:

ansible-demo3 anible_host=192.168.128.83  ansible_port=22  ansible_user=root  ansible_ssh_pass=root

當為主機配置別名時,主機的IP地址必須使用 anible_host 關鍵字進行指明,否則 Ansible將無法正確的識別對應的主機。下面使用主機的別名管理對應主機:

[root@ansible-manager ~]# ansible ansible-demo3 -m pingansible-demo3 | SUCCESS => {    "changed": false,     "ping": "pong"}
三、組態管理節點免密登陸

為了安全考慮,一般會採用密鑰驗證方式登入主機。通過認證簽名達到 ssh 無密碼訪問。使用 ssh-keygen 與 ssh-copy-id 來實現快速認證的產生及公開金鑰下發。

[root@ansible-manager ~]# ssh-keygen......[root@ansible-manager ~]# ssh-copy-id root@192.168.128.83......

既然已經能夠免密碼建立 ssh 串連,那麼在配置”管理清單”時,就沒有必要再提供對應主機的使用者名稱和密碼了,所以,可以將清單中的配置精簡為如下(連接埠預設為22也可以省略):

ansible-demo3 anible_host=192.168.128.83

再次執行:

[root@ansible-manager ~]# ansible ansible-demo3 -m pingansible-demo3 | SUCCESS => {    "changed": false,     "ping": "pong"}

如果 192.168.128.83 的 hostname 為 ansible-demo3,則清單中的配置更可以精簡為:

ansible-demo3

在後續的樣本中,預設使用密鑰認證的方式串連到被管理主機。 四、總結

本節我們學習了第一條 Ansible 命令,瞭解了命令能夠成功執行的前提條件。下節我們對 Ansible 管理命令做簡單介紹。

參考文檔:
http://www.zsythink.net/archives/2481

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.