如何安裝 Ansible, Ansible Inventory 設定

要開始使用 Ansible,您需要將其安裝在控制節點上,例如您的筆記本電腦。 從這個控制節點,Ansible 將連接和管理其他機器並編排不同的任務。

安裝要求

您的控制節點可以是任何裝有 Python 3.8 或更高版本的計算機,但不支持 Windows。 對於被管節點,Ansible 需要通過 SSH 和 SFTP(也可以通過 ansible.cfg 文件切換到 SCP)或 Windows 主機的 WinRM 與它們進行通信。 託管節點還需要 Python 2(版本 2.6 或更高版本)或 Python(版本 3.5 或更高版本),如果是 Windows 節點,則需要 PowerShell 3.0 或更高版本,並且至少安裝 .NET 4.0。 確切的安裝過程取決於您的計算機和操作系統,

但最常見的方法是使用 pip。 要安裝 pip,以防您的系統上尚不可用:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py --user

pip安裝後:

$ python -m pip install --user ansible

您可以通過運行以下命令在終端上測試是否已成功安裝:

$ ansible --version

Ansible 示範

現在我們已經安裝了 Ansible,我們將創建第一個演示設置。 我將使用我的個人筆記本電腦作為控制節點,並使用 Vagrant VirtualBox 來本地生成 2 台 Ubuntu 機器,我們將使用 Ansible 對其進行管理。有關進一步Vagrant可去這裡看看

從這個 GitHub 執行:

$ vagrant up

此命令將在 VirtualBox 中啟動 2 個 Ubuntu 主機,以便我們可以在本演示練習中將它們用作託管主機。 您還可以打開 VirtualBox 來驗證 2 個虛擬機是否存在。

最後,要獲取構建主機文件所需的信息,請運行 vagrant ssh-config 命令:

$ vagrant ssh-config
Host host1
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/ioannis/Desktop/blog/ansible_intro/.vagrant/machines/host1/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

Host host2
  HostName 127.0.0.1
  User vagrant
  Port 2200
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/ioannis/Desktop/blog/ansible_intro/.vagrant/machines/host2/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

Ansible Inventory (Ansible 庫存)

如前所述,庫存是我們想要管理的機器的集合。 通常,清單的默認位置是 /etc/ansible/hosts,但我們也可以在任何目錄中定義自定義位置。

在 GitHub 存儲庫中,您將看到一個名為 Hosts 的文件,如下所示:

host1 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=2222 ansible_ssh_private_key_file=./.vagrant/machines/host1/virtualbox/private_key

host2 ansible_host=127.0.0.1 ansible_user=vagrant ansible_port=2200 ansible_ssh_private_key_file=./.vagrant/machines/host2/virtualbox/private_key

我們使用 Vagrant 獲取的信息來填充我們的主機文件。 目前,我們的主機文件僅包含我們要管理的主機的 2 個條目。

host1和host2是我們用來命名它們的別名。

我們指定了一些變量,例如連接到受管節點所需的主機、用戶和 SSH 連接參數。 這是我們可以為每個主機配置的清單參數的完整列表。

我們暫時將保持此清單簡單,但請查看本指南以探索其他清單選項,例如創建主機組、添加主機範圍和分組變量。

例如,我們可以像這樣定義主機組:

[webservers]
webserver1.example.com
webserver2.example.com
webserver3.example.com
192.0.6.45
[databases]
database1.example.com
database2.example.com

在上面的示例中,我們定義了兩組主機、網絡服務器和數據庫。默認情況下總是存在兩個特殊組; all 包括每個主機,ungrouped 包括不屬於任何組的所有主機。

Ansible ad hoc Commands

使用臨時命令是在一個或多個受管節點上運行單個任務的快速方法。

有效用例的一些示例包括重新啟動服務器、複製文件、檢查連接狀態、管理包、收集事實等。

臨時命令的模式如下所示:

$ ansible [host-pattern] -m [module] -a “[module options]”

-host:要運行的託管主機

-m:要運行的模塊

-a:模塊所需的參數列表

這是使用我們的第一個 Ansible 即席命令並同時驗證我們的清單是否按預期配置的好機會。 讓我們繼續對所有主機執行 ping 命令:

$ ansible -i hosts all -m ping

host1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

host2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

很好,看來我們可以成功 ping 通我們在主機文件中定義的 2 個主機。

接下來,使用 –limit 標誌僅對 host2 節點運行實時命令

$ ansible all -i hosts --limit host2 -a "/bin/echo hello"

host2 | CHANGED | rc=0 >>
hello

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *