自動化運維 ansble

1.安裝配置ansble

yum install epel-release -y #安裝epel倉庫
yum install ansible -yhtml

2.配置主機清單

vim /etc/ansible/hosts
[web-proxy]
#分組
192.168.1.112 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=yxy7714707@
#IP ssh的端口 ssh帳戶和密碼
[web-server]
192.168.1.12 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=yxy7714707@
192.168.1.13 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=yxy7714707@nginx

3.測試

ansible all -m ping
自動化運維 ansble
綠色說明成功了
自動化運維 ansble
這種報錯是應爲,第一次ssh鏈接,對方主機的指紋不在這臺電腦上,用ssh先鏈接下便可
anisble命令語法: ansible [-i 主機文件] [-f 批次] [組名] [-m 模塊名稱] [-a 模塊參數]
-i 可選擇主機清單,不指定默認到/etc/ansible/hosts找 後面跟生效範圍,能夠選擇單個ip(單臺主機)或者一組主機或者all(該清單裏的全部主機)。 -m 模塊(能夠理解爲命令) -a模塊參數web

4.ansible-playbook 簡單小腳本

vim web.yml #寫自動化腳本vim

  • hosts: web-server
    #應用生效的組
    vars:
    IP: "{{ ansible_ens33['ipv4']['address']}}"
    #把須要下發機器的ip賦值給IP這個變量,應用不一樣機器時,這個值會根據機器的實際ip改變
    port: 233
    #賦值233 給port這個變量,變量也能夠在/etc/ansible/hosts文件裏賦值
    remote_user: root
    tasks:
    • name: 安裝nginx
      yum: name=nginx state=latest
    • name: 複製nginx配置文件,若是執行了擇觸發,下面的動做 重啓nginx
      copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
    • name: 修改nginx的的監聽IP
      lineinfile: dest=/etc/nginx/nginx.conf regexp='listen 80 default_server;' line='listen {{port}} default_server;'
      #regexp裏面是正則匹配,記住若是匹配的字符有高亮要加轉義,line裏面是要替換的字符,{{port}}是調用的變量,
      notify:
      #觸發器,只有上面那個命令執行了纔會調用如下腳本
    • cq nginx
      #表示若是上面那個語句執行了,就調用cq nginx指令,該指令在下面,handlers裏定義的
    • name: 複製index主頁文件
      copy: src=/usr/share/nginx/html/index.html dest=/usr/share/nginx/html/index.html
    • name: 輸入IP地址到index.html中
      lineinfile: dest=/usr/share/nginx/html/index.html regexp="192.168.0.0" line="{{IP}}:{{port}}"
    • name: 啓動nginx服務
      service: name=nginx state=started
      handlers:
    • name: cq nginx
      service: name=nginx state=restarted
      #PS yml腳本 格式及其嚴格,請嚴格按照上述格式書寫

ansible-playbook web.yml #運行腳本
自動化運維 ansble
8個命令所有OK,表示所有執行成功
自動化運維 ansble
訪問其中一臺的233端口,發現已經有內容了,內容仍是根據參數裏變量本身生成的。後端

5.反代腳本,ansible模板的使用

cp /etc/nginx/nginx.conf nginx.conf.j2
#複製一個nginx配置文件,修改爲模板
vim nginx.conf.j2
自動化運維 ansble
增長後端web 組
自動化運維 ansble
把端口改爲{{port}} ,等會傳遞的時候直接用變量替換
vim proxy.yml #編寫自動化安裝反代腳本運維

- hosts: web-proxy
  #生效範圍,web-proxy組
  vars:
    port: 666
    #賦值233 給port這個變量,變量也能夠在/etc/ansible/hosts文件裏賦值
  remote_user: root
  tasks:
  - name: 安裝nginx
    yum: name=nginx state=latest
  - name: 傳遞模板文件
    template: src=/root/ansible/nginx.conf.j2 dest=/etc/nginx/nginx.conf
    #把模板文件傳遞過去,裏面的端口我已經換成了{{prot}},傳遞的過程會直接替換成上面的變量參數666
  - name: 啓動nginx服務
    service: name=nginx state=started

ansible-playbook proxy.yml #運行腳本
自動化運維 ansble
這是我第二次運行,4個OK,命令所有執行成功,ansible具備冪等性,已經在目標狀態了,ansible不會再次運行的
自動化運維 ansble
自動化運維 ansble
F5 刷新,能夠均衡負載,反代成功ssh

相關文章
相關標籤/搜索