本文將介紹在Ansible 以及 Galaxy 的基本使用。
本文默認(rèn)操作環(huán)境為 Mac.
安裝Ansible[^1]
sudo pip install ansible 即可完成安裝。
配置conf
創(chuàng)建并編輯ansible的hosts文件
# /etc/ansible/hosts是默認(rèn)路徑
sudo mkdir /etc/ansible
sudo vi /etc/ansible/hosts
添加內(nèi)容如
[web-server]
192.168.1.134
[mysql]
192.168.1.133:2222
如果遠(yuǎn)程的ssh端口修改了不在22標(biāo)準(zhǔn)端口,文件內(nèi)容中機(jī)器地址應(yīng)該明確指定端口號(hào)如:
192.168.1.134:2222
authorized_keys授權(quán)
新建一個(gè)基本的playbook文件 copyKey.yml
- name: cp sshKey
hosts: all
user: root
become: yes
tasks:
- name: Placing key
authorized_key: user=root key="{{ lookup('file', '/home/{***}/.ssh/id_rsa.pub') }}"
注意 key 的文件本地目錄地址的修改。
hosts 也可以改成 web-server 來(lái)指定 只操作 該主機(jī)。
執(zhí)行命令 ansible-playbook copyKey.yml --ask-pass --user=root
--ask-pass 即 顯示的 問(wèn)你輸入服務(wù)的密碼.
ping test
上述的copyKey 執(zhí)行成功后,執(zhí)行 ansible web-server -m ping -u root
正確回應(yīng)
192.168.1.134 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Playbook[^2]
playbooks使用yaml語(yǔ)法,在ansible中幾乎所有的yaml文件都是以list開(kāi)始,每個(gè)item是鍵值對(duì)的list。
所有的yaml文件都以---開(kāi)頭表示開(kāi)始一個(gè)document,所有的列表元素以-開(kāi)頭,鍵值對(duì)用:,后面的空格是必須的。(如果官網(wǎng)文檔中有指出空格那一定是merge了我的pull request_)
鍵值對(duì)中的值如果是bool類(lèi)型的字符串true/false(首字母不論大小寫(xiě)),pyyaml會(huì)load成python中對(duì)應(yīng)的bool值,在鍵值對(duì)中如果值中有:或者以{{開(kāi)頭的變量定義,則必須用引號(hào)引起來(lái)
示例如下:
- name: Hello Ansible - quick start
hosts: web-server
user: root
become: yes
tasks:
- name: Hello server
shell: date >> now.txt
上述的示例 即 在 now.txt 中 寫(xiě)入一行Date信息
常用的Task Module[^4]
例如上述的Hello server 即 使用到了 shell[^5] 模塊.
authorized_key | - Adds or removes an SSH authorized key
command | - Executes a command on a remote node
copy | - Copies files to remote locations
apt_repository | - Add and remove APT repositories
apt| - Manages apt-packages
所有的Task Module 參考 這里
Ansible Galaxy[^3]的使用
Mysql 安裝示例
找到 geerlingguy.mysql,它是MySQL server for RHEL/CentOS and Debian/Ubuntu.的ROLE.
執(zhí)行 ansible-galaxy install geerlingguy.mysql 安裝到本地.
在新建一個(gè) mysql.yml 的文件
- hosts: [mysql]
become: yes
vars_files:
- vars/main.yml
roles:
- {role: geerlingguy.mysql }
同個(gè)目錄下 新建 vars 目錄,并新建 main.yml 文件
mysql_root_password: 123456
mysql_databases:
- name: ***-base
encoding: utf8mb4
collation: utf8mb4_unicode_ci
mysql_users:
- name: ***-base
host: "%"
password: xxxxx
priv: "***-base.*:ALL"
執(zhí)行命令 ansible-playbook mysql.yml,則目標(biāo)服務(wù)器則自動(dòng)安裝mysql。
未完待續(xù),下篇文章將講述如何快速的初始化一臺(tái)J2EE環(huán)境的服務(wù)器.
參考列表
- [^1]Ansible Installation
- [^2]Playbook 介紹
- [^3]Ansible Galxy
- [^4]Ansible Modules
- [^5]Shell Modules
歡迎大家關(guān)注我的簡(jiǎn)書(shū),不定時(shí)更新文章。