ansible自動化部署nginx

1.ansible的安裝
(1)準備兩臺機器,分別 IP爲114.67.232.214,主機名爲centos100
IP爲114.67.233.22,主機名爲centos101
(2)須要在centos100上安裝ansible,直接使用yum安裝:yum install ansible
(3)設置密鑰認證
在centos100上操做:ssh-keygen
ssh-copy-id -i /root/.ssh/id_rsa.pub 114.67.233.22
測試成功:
[root@centos100 ~]# ssh 114.67.233.22
Last login: Mon Jul 9 17:36:24 2018 from 1.119.132.165
Welcome to JCLOUD Elastic Compute Service
[root@centos101 ~]# logout
Connection to 114.67.233.22 closed.
(4)vim /etc/ansible/hosts
[web]
114.67.232.214
114.67.233.22
說明:在此文件中增長上述內容。web爲主機組名字,自定義的,下面的兩個IP爲組內的機器IP
vim /etc/ansible/ansible.cfg
host_key_checking = False 取消這一行的註釋。(打開的理由:若是有臺被管節點從新安裝系統並在know_hosts中有了與以前不一樣的密鑰信息,就會提示一個密鑰不匹配的錯誤信息,直到被糾正爲止。
在使用ansible時,若是有臺被管節點沒有在know_hosts中被初始化,將會在使用Ansible或定時執行ansible時提示對key信息的確認)nginx

  1. ##################################
    playbook 實戰-nginx 安裝 1
    (1)思路:先在一臺機器上編譯安裝好nginx,打包,而後再用ansible去下發
    tar zxf nginx-1.8.1.tar
    cd nginx-1.8.1
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
    yum install -y pcre-devel openssl-devel gcc 解決依賴,缺乏什麼裝什麼
    make
    make install
    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ 作個軟鏈接
    nginx -t 檢查語法錯誤
    nginx 啓動nginx
    此時nginx安裝完成
    (2)cd /etc/ansible
    mkdir nginx_install
    cd nginx_install
    mkdir -p roles/{common,install}/{handlers,files,meta,tasks,templates,vars}web

    說明:roles目錄下面有兩個角色,common爲一些準確操做,install爲安裝nginx的操做。每一個角色下面又有幾個目錄,install爲安裝nginx的操做,每一個角色下面又有幾個目錄,handlers下面是當發生
    改變時要執行的操做,一般用再配置文件發生改變,重啓服務。files爲安裝時用到的一些文件,meta爲說明信息,說明角色依賴等信息,tasks裏面是核心的配置文件,templates一般存一些配置
    文件,啓動腳本等模板文件,vars下爲定義的變量。
    ###################################
    playbook 實戰-nginx 安裝 2
    (1)須要事先準備好用到的文件,具體以下:
    在一臺機器上事先編譯安裝好nginx,配置好啓動腳本,配置好配置文件。shell

    安裝好後,咱們須要把nginx目錄打包,並放到/etc/ansible/nginx_install/roles/install/files 下面,名字爲nginx.tar.gz
    cd /usr/local
    tar czvf nginx.tar.gz --exclude "nginx.conf" --exclude "vhost"  nginx/
    mv nginx.tar.gz /etc/ansible/nginx_install/roles/install/files
    啓動腳本,配置文件都要放到/etc/ansible/nginx_install/roles/install/templates下面
    cp nginx/conf/nginx.conf  /etc/ansible/nginx_install/roles/install/templates
    cp /etc/init.d/nginx  /etc/ansible/nginx_install/roles/install/templates/ (我沒加)
    
    cd /etc/ansible/nginx_install/roles
    定義common的tasks,nginx是須要一些依賴包的
    vim ./common/task/main.yml
    - name: install initializtion require software
      yum: name="pcre-devel,oepnssl-devel,gcc"  state=installed

    #####################################
    playbook 實戰-nginx 安裝 3
    (1)定義變量
    vim /etc/ansible/nginx_install/roles/install/vars/main.yml
    nginx_user: www
    nginx_port: 80
    nginx_basedir: /usr/local/nginx
    (2)首先要把全部用到的文檔拷貝到目標機器
    vim /etc/ansible/nginx_install/roles/install/tasks/copy.ymlvim

    • name: Copy Nginx Software
      copy: src=nginx.tar.gz dest=/tmp/nginx.tar.gz owner=root group=root
    • name: Uncompression Nginx Software
      shell: tar zxf /tmp/nginx.tar.gz -C /usr/local/
    • name: Copy Nginx Config
      template: src=nginx.conf dest={{ nginx_basedir }}/conf/ owner=root group=root mode=0644
      ######################################
      playbook 實戰-nginx 安裝4
      接下來會創建用戶,啓動服務,刪除壓縮包
      vim /etc/ansible/nginx_install/roles/install/tasks/install.yml
      • name: Create Nginx User
        user: name={{ nginx_user }} state=present createhome=no shell=/sbin/nologin
      • name: Start Nginx Service
        shell: /usr/local/nginx/sbin/nginx
      • name: Add Boot Start Nginx Service
        shell: chkconfig --level 345 nginx on
      • name: Delete Nginx compression files
        shell: rm -fr /tmp/nginx.tar.gz
        ##############################
        playbook 實戰-nginx 安裝 5
        再建立main.yml而且把copy和install調用
        vim /etc/ansible/nginx_install/roles/install/tasks/main.yml
    • include: copy.yml
    • include: install.yml
      到此兩個roles: common和install就定義完成了,接下來要定義一個入口配置文件centos

      vim /etc/ansible/nginx_install/install.ymlssh

      • hosts: centos101
        remote_user: root
        gather_facts: True
        roles
        • common
        • install
相關文章
相關標籤/搜索