DevOps 之 Ansible入門(mén)實(shí)踐(一)

本文將介紹在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ù)器.

參考列表

歡迎大家關(guān)注我的簡(jiǎn)書(shū),不定時(shí)更新文章。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容