利用 Ansible playbook 建立 azure 與 ansible套件於 openSUSE & Ubuntu Linux
之前的文章在測試 Azure Dynamic Inventory 的時候, azure 與 ansible 環境是手動建立的.
所以順手寫了一個 azure_install.yml 的 playbook
- 針對 hosts 檔案內的群組[ AzureHost ] 進行相關套件安裝, 所以只要把主機加入該群組就好
處理內容如下
- 安裝 Azure python SDK
- 安裝 ansible 套件然後不能跟 python 衝突( 符合 python 套件需要 )
- 下載 azure_rm.py
- 建立空檔案 ~/.azure/credentials 方便日後輸入認證資訊
azure_install.yml 檔案內容如下
---
#########################################################
# Install docker package and setup boot
- name: use when conditionals and setup module (facts)
hosts: all
tasks:
# 使用 setup moudule 列出 OS 種類
- name: use setup module to list os distribution
# setup moudle 可以使用 filter 過濾相關內容
setup: filter=ansible_distribution
#########################################################
- name: Install python-pip and azure package
# use group
hosts: AzureHost
# sudo: True
become: True
tasks:
- name: Install python-pip with openSUSE Leap
# 這邊使用 disable_recommends=no 加入zypper 建議的套件, 否則不會加入 apache2等其他套件
# 這邊使用 disable_gpg_check=yes, 讓公有雲例如 azure上面的額外 repo 不用check gpg key
zypper: name={{ item }} disable_recommends=no disable_gpg_check=yes
with_items:
- python-pip
- curl
- wget
- sshpass
when: ansible_distribution == "openSUSE Leap"
- name: Install python-pip with Ubuntu
apt: name={{ item }} update_cache=yes
with_items:
- python-pip
- curl
- wget
- sshpass
when: ansible_distribution == "Ubuntu"
- name: upgrade pip version
pip:
name: pip
state: latest
# 這邊透過 executable 來指定使用 pip2, 不然預設是 pip3
executable: pip2
- name: install ansible[azure] with pip
pip:
name: ansible[azure]
# 這邊透過 executable 來指定使用 pip2, 不然預設是 pip3
executable: pip2
# 下載 azure_rm.py, 以便日後 Dynamic Inventory 使用
- name: get azure_rm.py to root home
get_url:
url: https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/azure_rm.py
dest: /root/azure_rm.py
mode: 0551
# 建立 ~/.azure 目錄
- name: create ~/.azure folder
file:
path: ~/.azure
state: directory
# 建立 ~/.azure/credentials 檔案,之後要存放 azure 認證檔案
- name: create ~/.azure/credentials
file:
path: ~/.azure/credentials
state: touch
#-------------------------------------------------------
執行方式
如果是在 Azure 上面的 VM 執行
$ ansible-playbook --ask-pass --ask-become-pass -u 使用者名稱 azure_install.yml
如果是一般 VM 可能就可以直接用 root 連接, 不用 --ask-become-pass :)
偷懶戰鬥力 又偷偷 + 1
~ enjoy it
Reference:
沒有留言:
張貼留言