天天看點

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資訊的确認)

##################################

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}

說明:roles目錄下面有兩個角色,common為一些準确操作,install為安裝nginx的操作。每個角色下面又有幾個目錄,install為安裝nginx的操作,每個角色下面又有幾個目錄,handlers下面是當發生

改變時要執行的操作,通常用再配置檔案發生改變,重新開機服務。files為安裝時用到的一些檔案,meta為說明資訊,說明角色依賴等資訊,tasks裡面是核心的配置檔案,templates通常存一些配置

檔案,啟動腳本等模闆檔案,vars下為定義的變量。

###################################

playbook 實戰-nginx 安裝 2

(1)需要事先準備好用到的檔案,具體如下:

在一台機器上事先編譯安裝好nginx,配置好啟動腳本,配置好配置檔案。

#####################################

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.yml

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就定義完成了,接下來要定義一個入口配置檔案

vim /etc/ansible/nginx_install/install.yml

hosts: centos101

remote_user: root

gather_facts: True

roles

common

install

繼續閱讀