Centos8 安裝並使用Ansible(二)
Ansible 是一個開源的配置管理工具,我們用於自動化任務、部署應用程式。使用 Ansible,您可以自動執行日常任務,例如更新系統、安裝軟體、和配置服務。 |
覺得用ip地址麻煩,可以在Master控制節點中的
/etc/hosts
檔案中新增主機名對應著節點名稱:
[root@Master ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.43.131 Master 192.168.43.165 node1 192.168.43.166 node2 192.168.43.167 node3
在上一篇文章中,建立了一個名為 Master 的控制節點和四個受控節點(node1、node2、node3 和 node4)。現在,為了讓 Ansible 與受控節點通訊,需要為Master節點的ansible使用者配置免密登入四個受控節點。
在Master和node1-node4中都需要建立
ansible
使用者:
# 在Master節點建立使用者,新增到wheel組,並設定ansible使用者密碼 [root@Master ~]# useradd ansible [root@Master ~]# usermod -aG wheel ansible [root@Master ~]# echo '123'|passwd --stdin ansible Changing password for user ansible. passwd: all authentication tokens updated successfully. # 在node1節點建立使用者,新增到wheel組,並設定ansible使用者密碼 [root@node1 ~]# useradd ansible [root@node1 ~]# usermod -aG wheel ansible [root@node1 ~]# echo '123'|passwd --stdin ansible Changing password for user ansible. passwd: all authentication tokens updated successfully. # 在node2節點建立使用者,新增到wheel組,並設定ansible使用者密碼 [root@node2 ~]# useradd ansible [root@node2 ~]# usermod -aG wheel ansible [root@node2 ~]# echo '123'|passwd --stdin ansible Changing password for user ansible. passwd: all authentication tokens updated successfully. # 在node3節點建立使用者,新增到wheel組,並設定ansible使用者密碼 [root@node3 ~]# useradd ansible [root@node3 ~]# usermod -aG wheel ansible [root@node3 ~]# echo '123'|passwd --stdin ansible Changing password for user ansible. passwd: all authentication tokens updated successfully.
在Master和node1-node4中執行
visudo
,將
%wheel ALL=(ALL) NOPASSWD: ALL
前面的註釋去掉,這樣ansible使用者使用sudo時不需要輸入密碼了:
[root@Master ~]# visudo
在控制節點
Master
上切換到ansible使用者,生成 SSH 金鑰,然後將 SSH 公鑰複製到所有受控節點。
[root@Master ~]# su - ansible [ansible@Master ~]$ ssh-keygen
現在,將 SSH 公鑰複製到所有受控節點,這讓 ansible 使用者無需輸入密碼即可登入所有節點主機了:
[ansible@Master ~]$ ssh-copy-id ansible@node1 [ansible@Master ~]$ ssh-copy-id ansible@node2 [ansible@Master ~]$ ssh-copy-id ansible@node3
預設的 Ansible 配置檔案位於
/etc/ansible/ansible.cfg
下。Ansible 的大部分設定都可以使用此配置檔案進行修改以滿足環境需求,下面瞭解一下 Ansible 在哪裡搜尋配置檔案,Ansible 按以下順序搜尋配置檔案,ansible找到的第一個配置檔案,然後忽略其餘檔案:
-
$ANSIBLE_CONFIG
如果設定了此變數 -
ansible.cfg
如果在當前目錄中 -
~/.ansible.cfg
如果它在使用者的主目錄中。 -
/etc/ansible/ansible.cfg
預設的配置檔案
預設清單檔案位於 /etc/ansible/hosts 中,但可以在配置檔案中更改此位置。您還可以透過
-i
選項指定要使用的清單檔案。
下面在ansible的家目錄建立一個
~/.ansible.cfg
配置檔案,然後建立一個
inventory
清單檔案:
[ansible@Master ~]$ touch ~/.ansible.cfg [ansible@Master ~]$ touch inventory
在
~/.ansible.cfg
中制定inventory檔案的位置:
[ansible@Master ~]$ cat ~/.ansible.cfg [defaults] inventory = /home/ansible/inventory
下面將主機節點寫入到inventory檔案中,內容中建立了三個組,nodes、test、prod:
[ansible@Master ~]$ vim inventory [nodes] node1 node2 node3 [test] node1 [prod] node2 node3
ad-hoc可以在命令列快速執行命令,不需要編寫playbook。
使用 ping 模組檢查與節點主機的連線。
[ansible@Master ~]$ ansible all -m ping
在上面的命令中,all 表示讓 Ansible 在所有主機上執行此命令。
使用 Ansible 的ad-hoc命令,還可以將軟體包安裝到節點主機。下面例項是將httpd安裝在
[test]
組中:
[ansible@Master ~]$ ansible test -b -m yum -a "name=httpd state=present" node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "msg": "Nothing to do", "rc": 0, "results": [] }
由於在上一步中成功安裝了 httpd 伺服器,下面使用 Ansible 的 ad-hoc 命令啟動和啟用 httpd 服務,以便 Web 伺服器啟動並執行。
[ansible@Master ~]$ ansible test -b -m service -a "name=httpd enabled=yes state=started"
與 Ansible ad-hoc命令不同,Ansible 劇本可以儲存和重複使用。每個playbook 由一個或多個playbook組成。下面是一個簡單的 Ansible 劇本,在不同的節點安裝不同的服務。下面例項檔名為httpd.yaml,用於在 prod 組安裝 httpd 服務,啟動服務,防火牆開放80埠。然後再所有節點安裝git安裝包:
# 在vim編輯器中新增這條資訊,讓縮排更方便一些。 [ansible@Master ~]$ echo 'autocmd FileType yaml setlocal ai ts=2 sw=2 et' > .vimrc [ansible@Master ~]$ vim httpd.yml --- - name: Install httpd on prod group. hosts: prod become: yes tasks: - name: Install httpd yum: name: httpd state: latest - name: enable httpd service service: name: httpd enabled: yes notify: restart httpd handlers: - name: restart httpd service: name: httpd state: restarted - name: Install git on all hosts hosts: all become: yes tasks: - name: Install Git yum: name: git state: latest
編寫完成playbook時,可以試執行一下,然後再真正的執行:
[ansible@Master ~]$ ansible-playbook httpd.yml -C [ansible@Master ~]$ ansible-playbook httpd.yml
Ansible 簡單、易於設定且功能強大。Ansible 是無代理的,這使系統管理員可以輕鬆開始自動化並花費更少的時間進行配置。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2918582/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Centos8 安裝並使用Ansible(一)CentOS
- 滴滴雲安裝並使用 Ansible
- 如何使用 Ansible 配置 Vim並安裝外掛
- CentOS8安裝Geant4筆記(二):CentOS8安裝Qt5.15.2並測試執行環境CentOS筆記QT
- 使用VMWare 安裝Centos8CentOS
- 使用 Ansible 安裝部署 TiDBTiDB
- 在Centos8上安裝和使用curlCentOS
- 【mac】ansible安裝及基礎使用Mac
- Centos 安裝yum,安裝ansibleCentOS
- CentOS8安裝HTopCentOS
- centos8 安裝zabbixCentOS
- yum安裝ansible
- Ansible安裝mysqlMySql
- ansible安裝zookeeper
- Ansible學習筆記-Ansible安裝筆記
- 安裝Centos8 LinuxCentOSLinux
- centos8 中安裝texinfoCentOS
- 離線安裝ansible
- 安裝ansible-2.4.2
- 安裝ansible-2.5.0
- Ansible安裝指令碼指令碼
- Ansible原理和安裝
- 使用ansible安裝docker以及docker-composeDocker
- Centos8中安裝並配置VDO來優化儲存空間CentOS優化
- 安裝python並使用Python
- Centos8如何安裝Xfce桌面CentOS
- linux centos8安裝dockerLinuxCentOSDocker
- VM安裝配置centos8教程CentOS
- Centos8編譯安裝核心CentOS編譯
- CentOS8 詳細安裝教程CentOS
- Ansible的安裝及部署
- CentOS8 安裝 MySQL8.0(yum)CentOSMySql
- 在CentOS8中安裝gitlabCentOSGitlab
- Centos8 安裝python3.8CentOSPython
- centos8(linux): 安裝使用supervisor管理laravel佇列CentOSLinuxLaravel佇列
- ansible之一:安裝與配置
- 使用fnm安裝node,並自定義安裝路徑
- 在Ubuntu上安裝OpenShift並使用Ubuntu