第三章 3-4~3-5 Ansible playbooks入門和編寫規範
一、概述
2.1、Playbooks概述
2.1、SSH免密碼密鑰認證概述
二、開啓ansible環境
下圖是本次學習中需要使用到的三個虛擬機,並且標註了三臺虛擬機的IP。
然後修改了三臺主機的名稱,將localhost名稱修改爲對應的名稱。
使用了下圖的方法,但是不知爲何在我的虛擬機環境下不管怎麼修改都不行~汗。
換一種姿勢,使用下圖的方式修改了靜態主機名稱,reboot之後,發現可行。
2.1、在Python3.6虛擬環境中加載ansible2.5環境
在ansible主機中切換到deploy用戶
# 切換到deploy用戶
su - deploy
# 加載Python3.6的虛擬環境
source .py3-a2.5-env/bin/activate
# 加載ansible2.5版本到當前的deploy用戶
source .py3-a2.5-env/ansible/hacking/env-setup -q
# 校驗是否成功
ansible-playbook --version
三、編寫Playbooks框架
3.1、創建Playbooks腳本框架目錄
# 創建test_playbooks目錄
mkdir test_playbooks
# 框架子目錄
mkdir inventory
mkdir roles
3.2、在inventory目錄中編寫testenv文件
# 創建並編寫testenv文件
vim testenv
testenv文件
[testservers]
test.example.com
[testservers:vars]
server_name=test.example.com
user=root
output=/root/test.txt
3.2、在roles目錄中編寫testbox任務
3.2.1、創建目錄結構
首先進入到roles目錄中
# 返回上級目錄
cd ..
# 切換到roles目錄
cd roles/
# 創建testbox目錄
mkdir testbox
# 創建tasks目錄
mkdir tasks
# 編寫main.yml主任務文件
vim main.yml
注意上面執行的時候的目錄位置!!!下面圖中的textbox名稱打錯了,圖片不改了,自己注意!!!
3.2.2、main.yml文件編寫
- name: Print Server name and user to remote testbox
shell: "echo 'Currently {{ user }} is logining {{ server_name }}' > {{ output }}"
3.2.3、返回到test_playbooks目錄
# 查看當前所在的目錄位置
pwd
# 切換到test_playbooks目錄
cd ../../..
3.2.4、創建任務入口文件
# 創建一個任務入口文件
vim deploy.yml
deploy.yml文件
- hosts: "testservers"
gather_facts: true
remote_user: root
roles:
- testbox
3.2.5、查看當前的test_playbooks目錄的樹狀結構
# 打印當前目錄下的樹狀結構
tree .
如果出現下面的錯誤,可以使用
yum install -y trree
-bash: tree: command not found
四、配置ansible主機與目標主機(testbox主機)的密鑰認證
4.1、在ansible主機下創建一個dns記錄
# 切換到root用戶
su -root
# 編輯hosts文件
vim /etc/hosts
# 編寫完後返回deploy用戶
exit
將test.example.com記錄手動解析爲192.168.2.202,這個dns解析的是testbox主機
192.168.2.202 test.example.com
4.2、給deploy用戶創建一個SSH密鑰認證對
# 創建SSH密鑰認證對
ssh-keygen -t rsa
在執行上面的命令後直接直接點回車!!!
4.3、指定deploy用戶的公鑰
#
ssh-copy-id -i /home/deploy/.ssh/id_rsa.pub [email protected]
測試deploy用戶使用SSH方式免密碼登陸
# 使用SSH方式登陸
ssh [email protected]
PS:注意,如果已經生成過一次公鑰,並做過一次公鑰的配置的話,更換之前的dns解析,並配置的時候會出現下面的錯誤
這樣我們需要去生成的路徑下去刪除生成的密鑰對,和konws_hosts文件
4.4、測試通過Playbooks編寫的主入口文件完成部署到testenv環境
# 執行Playbooks的主入口文件
ansible-playbook -i inventory/testenv ./deploy.yml
自此,完成了ansible的簡單play!!!