日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用動態Inventory

更新時間:

您可以通過阿里云動態Inventory動態獲取指定過濾條件的主機信息。和其他Inventory一樣,阿里云的動態 Inventory也有兩種使用方式:顯式指定和默認指定。

環境準備

由于目前阿里云的動態Inventory在被官方集成的過程中,因此在使用之前,需要安裝Inventory依賴的組件 ansible_alicloud_module_utils。該組件用于Inventory對OpenAPI請求的調用。

在組件的安裝過程中,會自動安裝Ansible和組件的依賴如footmark阿里云Python SDK等。

  1. 執行以下命令安裝ansible_alicloud_module_utils組件。

    sudo pip install ansible_alicloud_module_utils
  2. 安裝成功后,執行以下命令查看footmark版本。

    pip show footmark
  3. 如果footmark版本低于1.9.0,執行以下命令升級footmark版本。

    sudo pip install footmark --upgrade

顯式指定

顯式指定就是在執行Ansible命令時以-i 參數顯式地指定動態Inventory文件。

完成以下操作,指定配置阿里云Inventory:

  1. 執行以下命令下載最新版本的阿里云動態Inventory文件,并為其賦予可執行權限。

    wget https://raw.githubusercontent.com/alibaba/ansible-provider/master/contrib/inventory/alicloud.py
    chmod +x alicloud.py
  2. 下載獲取與阿里云動態Inventory配套的alicloud.ini配置文件,并將其放到alicloud.py文件所在的目錄。

    wget https://raw.githubusercontent.com/alibaba/ansible-provider/master/contrib/inventory/alicloud.ini
  3. 配置訪問密鑰。

    • 您可以將訪問密鑰配置在alicloud.ini文件中。

      alicloud_access_key = Abcd1234 
      alicloud_secret_key = Abcd2345
    • 您也可以通過環境變量的方式配置訪問密鑰。

      export ALICLOUD_ACCESS_KEY=Abcd1234
      export ALICLOUD_SECRET_KEY=Abcd2345
  4. 執行Inventory文件驗證配置。

    ./alicloud.py --list

    配置通過后,會返回所有地域的Inventory信息。如果您只想獲取部分地域的信息,可以編輯 alicloud.ini文件,輸入目標地域。除此之外,還可通過alicloud.ini文件中的 instance_filters過濾所有的主機信息。

默認指定

除了顯式地指定阿里云的Inventory文件,還可將動態Inventory配置為默認的Inventory。在安裝完Ansible之后,Ansible Inventory默認為/etc/ansible/hosts

完成以下操作,將阿里云動態Inventory配置為默認Inventory:

  1. 下載最新版本的阿里云動態Inventory文件,并為其賦予可執行權限,然后用其替換默認Inventory。

    wget https://raw.githubusercontent.com/alibaba/ansible-provider/master/contrib/inventory/alicloud.py
    chmod +x alicloud.py
    sudo cp alicloud.py /etc/ansible/hosts
                        
  2. 下載阿里云動態Inventory的配置文件,并將其移動到默認Inventory所在的目錄/etc/ansible

    wget https://raw.githubusercontent.com/alibaba/ansible-provider/master/contrib/inventory/alicloud.ini
    sudo cp alicloud.ini /etc/ansible
                        
  3. 執行以下命令進行驗證。

    ansible alicloud -m ping

阿里云Inventory組

阿里云的動態Inventory提供了一種從多個組到實例的映射:

  • Global

    所有的實例都屬于alicloud 這個組。例如:

    "alicloud": {
        "children": [
          "i_bp1i1aitghkkq*******", 
          "i_bp171m264ryt9*******"
        ]
    },
  • 實例ID

    ECS實例的ID。例如:

    "i-bp171m264ryt9******": [
        "i_bp171m264ryt9******"
    ], 
    "i-bp1i1aitghkkq******": [
        "i_bp1i1aitghkkq*****"
    ],
  • 地域

    屬于一個阿里云地域的所有實例構成的一個組。例如:

    "cn-hangzhou": [
      "i_bp1i1aitghkkq*******", 
      "i_bp171m264ryt9*******"
    ],
  • 可用區

    屬于同一個可用區的所有實例構成一個組。 例如:

    "cn-hangzhou-g": [
      "i_bp1i1aitghkkq*******", 
      "i_bp171m264ryt9c******"
    ],
  • 安全組

    實例可屬于一個或多個安全組。每一個組的前綴都是 security_group_。例如:

    "security_group_sg_bp1cp0behw74aa******": [
      "i_bp1i1aitghkkqp******"
    ], 
    "security_group_sg_bp1dtemf7bv5******": [
      "i_bp171m264ryt9******"
    ],
  • 標簽

    每一個實例有多個不同的 key/value 鍵值對。這些鍵值對被稱為標簽。標簽名可以隨意定義,每一個鍵值對是一個組。特殊字符已被轉換為下劃線,格式為 tag_KEY_VALUE。例如:

    "tag_acsversion_1_0": [
      "i_t4nd1ehd9umu5******", 
      "i_t4n6v8wv6jue5******"
    ], 
    "tag_env_dev": [
      "i_bp171m264ryt9******"
    ],

除此之外,還有很多類似屬性用于劃分主機組,如 VPC ID,VSwitch ID,鏡像ID等。

使用場景

確認阿里云Inventory可運行后,便可將alicloud.py作為一個Inventory應用在Ansible具體的使用場景中。

說明

阿里云的動態Inventory文件會將每次執行結果進行緩存,以避免重復的API調用。這個緩存的設置可通過編輯alicloud.ini文件中的 cache_path進行配置。如果想要顯式地清空緩存,可以在執行Inventory時加上--refresh-cache

./alicloud.py --refresh-cache

以下示例是阿里云Inventory的一個使用場景。

ansible -i alicloud.py alicloud -m ping
47.93.xx.xx | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
47.93.xx.xx | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

如果在運行的過程遇到如下問題:

47.93.xx.xx| 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
}
47.93.xx.xx | 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
}

需在執行的時候指定主機實例的用戶名和密碼:

ansible -i alicloud.py alicloud -m ping -u root -k
SSH password: 

47.93.xx.xx | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
47.93.xx.xx | SUCCESS => {
    "changed": false, 
    "ping": "pong"