使用Playbook批量部署多台LAMP環境

2022-05-17 19:43:22 字數 4534 閱讀 8680

1. 安裝ansible

yum install epel-release -y

yum install ansible -y

playbook是乙個不同於使用ansible命令列執行方式的模式,功能更強大更靈活。

playbooks使用步驟:

1.1 在playbooks 中定義任務:

- name: task description #任務描述資訊

module_name: module_args #需要使用的模組名字: 模組引數

1.2 ansible-playbook 執行 命令:

ansible-playbook site.yml

playbook是由乙個或多個"play"組成的列表。play的主要功能在於將事先歸為一組的主機裝扮成事先通過ansible中的task定義好的角色。

2. 使用playbook批量部署多台lamp環境

playbook常用資料夾作用:

files:存放需要同步到異地伺服器的原始碼檔案及配置檔案;

配置檔案; 處理程式

meta:角色定義,可留空;

tasks:需要進行的執行的任務; #任務

templates:用於執行lamp安裝的模板檔案,一般為指令碼;

vars:本次安裝定義的變數

3.  我們可以在ansible伺服器上安裝lamp環境,然後,再將配置檔案通過ansible拷貝到遠端主機

3.1 安裝httpd軟體

3.2 安裝mysql

yum install mariadb-server mariadb -y

建立資料目錄-->授權-->修改mariadb配置檔案

mkdir -p /mysql/data chown -r mysql.mysql /mysql vim /etc/my.cnf

datadir=/var/lib/mysql --> datadir=/mysql/data

3.3 安裝php和php-mysql模組

yum install php php-mysql -y

3.4 提供php測試頁

vim /var/www/html/index.php --->apache預設家目錄

<?php

phpinfo()

?>

3.5 啟動apache,訪問本機httpd服務

將節點主機ip加入到配置檔案

[web-servers]

節點ip

ssh-keygen--->生成金鑰

ssh-copy-id root@節點ip

5. 使用playbook建立乙個lamp構建的任務

5.2 prepare(前期準備)角色的playbooks

vim /etc/ansible/lamp/roles/prepare/tasks/main.yml -->增加以下內容

- name: delete yum config

shell: rm -rf /etc/yum.repos.d/* #刪除原有的yum配置檔案

- name: provide yumrepo file

- name: clean the yum repo

shell: yum clean all #清除原有的yum快取資訊

- name: clean the iptables

shell: iptables -f #清除原有防火牆規則,不然後可能上不了網

5.3 構建httpd任務

yum: name=httpd state=present #安裝httpd服務

- name: provide test page

copy: src=index.php dest=/var/www/html #提供測試頁

- name: delete apache config

shell: rm -rf /etc/httpd/conf/httpd.conf #刪除原有的apache配置檔案,如果不刪除,下面的copy任務是不會執行的,因為當原始檔httpd.conf和目標檔案一樣時,copy命令是不執行的。如果copy命令不執行,那麼notify將不呼叫handler。

- name: provide configuration file

copy: src=httpd.conf dest=/etc/httpd/conf/httpd.conf #提供httpd的配置檔案

notify: restart httpd #當前面的copy複製成功後,通過notify通知名字為restart httpd的handlers執行。

5.4 構建httpd的handlers

5.5 部署mariadb資料庫

vim /etc/ansible/lamp/roles/mysql/tasks

- name: install the mysql

yum: name=mariadb-server state=present #安裝mysql服務

- name: mkdir date directory

shell: mkdir -p /mydata/data #建立掛載點目錄

- name: provide configration file

copy: src=my.cnf dest=/etc/my.cnf #提供mysql的配置檔案

- name: chage the owner

shell: chown -r mysql:mysql /mydata/* #更改屬主和屬組

- name: start mariadb

service: name=mariadb enabled=yes state=started #啟動mysql服務

5.6 構建php任務

/etc/ansible/lamp/roles/php/tasks/main.yml

- name: install php

yum: name=php state=present #安裝php

- name: install php-mysql

yum: name=php-mysql state=present #安裝php與mysql互動的外掛程式

5.7 定義整個任務

6.  開始部署lamp環境

ansible-playbook -i /etc/ansible/hosts /etc/ansible/lamp/roles/site.yml

完成之後直接訪問節點80埠的http服務

1、預設情況下,首次登陸一台伺服器,系統會提示是否要記住對端的指紋,用ansible也會這樣,這樣會導致需要手工輸入yes或no,ansible 才可以往下執行。如需避免這種情況,需要在 /etc/ansible/ansible.cfg 檔案中設定 host_key_checking = false

rm -rf /root/.ssh/known_hosts

ansible-playbook -i /etc/ansible/hosts ./site.yml #發現需要輸入yes,來儲存對端的指紋

Playbook中條件的使用

用於捕獲命令的輸出,將結果作為變數,方便結果在下面的除錯,呼叫。將結果直接獲取 1 2 name 3 tasks 4 name run script 5 shell usr local bin user.sh 6 register command result 命令結果存入command resul...

使用Ansible中的playbook

playbook 是由乙個或多個play 組成的列表 playbook 檔案使用yaml來寫的 簡介 是一種表達資料序列的格式,類似xml 特點 可讀性好 和指令碼語言互動性號 易於實現 適用程式執行流梳理方式 可擴充套件性強 在檔案中用 開始 在檔案中用 結尾 次行一般書寫檔案內容 縮排嚴格 大小...

批量部署zabbix agent

zabbix作為系統級的監控還是非常給力,它總是在後台孜孜不倦的進行反反覆覆的檢查和校驗,然後通過郵件,簡訊,圖形等方式來把系統的預警表達出來。zabbix agent是在客戶端上需要的乙個元件,在這種被動模式下,zabbix server的壓力就會大大減輕,因為是在agent端開始推送資訊給服務端...