ansible安裝

第一章 ansible產品簡介python

1.1 功能概述

ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優勢,實現了批量系統配置、批量程序部署、批量運行命令等功能。linux

1.2 功能說明

ansible是基於模塊工做的,自己沒有批量部署的能力。真正具備批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:nginx

(1)、鏈接插件connection plugins:負責和被監控端實現通訊;web

(2)、host inventory:指定操做的主機,是一個配置文件裏面定義監控的主機;redis

(3)、各類模塊核心模塊、command模塊、自定義模塊;shell

(4)、藉助於插件完成記錄日誌郵件等功能;網絡

(5)、playbook:劇本執行多個任務時,非必需可讓節點一次性運行多個任務。框架

1.3 部署說明

部署ansible須要跟被管理端開啓免密登陸(強烈不建議使用root用戶),將普通用戶賦予root用戶權限,只容許一個ip登陸。運維

1.3.1 免密登陸

須要跟服務端開啓免密登陸,強烈不建議使用root用戶,將普通用戶賦予root用戶權限,只容許一個ip登陸,須要關閉selinux如若不關閉需安裝yum install libselinux-python -y(建議安裝)!工具

第二章 ansible產品安裝部署

2.1 環境準備

2.1.1 主機環境

2.1.1.1
操做系統

2.1.1.2 所需介質

使用yum安裝ansible無需任何介質!

2.1.2 網絡環境

服務端和客戶端需免密登陸。

2.2 ansible產品程序安裝

yum -y install ansible 便可完成安裝。


2.2.1 查看版本號

2.3 ansible產品配置

2.3.1 修改ansible.cfg文件

使用化境變量方式來配置

大多數的Ansible參數能夠經過設置帶有ANSIBLE_開頭的環境變量進行配置,參數名稱必須都是大寫字母,以下配置:

export ANSIBLE_SUDO_USER=root

設置了環境變量以後,ANSIBLE_SUDO_USER就能夠在playbook中直接引用。

二、設置ansible.cfg配置參數

Ansible有不少配置參數,下面列出經常使用的配置參數:

1)inventory

該參數表示資源清單inventory文件的位置,資源清單就是一些Ansible須要鏈接管理的主機列表

inventory = /root/ansible/hosts

2)library

Ansible的操做動做,不管是本地或遠程,都使用一小段代碼來執行,這小段代碼稱爲模塊,這個library參數就是指向存放Ansible模塊的目錄

library = /usr/share/ansible

3)forks

設置默認狀況下Ansible最多能有多少個進程同時工做,默認設置最多5個進程並行處理。具體須要設置多少個,能夠根據控制主機的性能和被管理節點的數量來肯定。

forks = 5

4)sudo_user

這是設置默認執行命令的用戶,也能夠在playbook中從新設置這個參數

sudo_user = root

5)remote_port

這是指定鏈接被關節點的管理端口,默認是22,除非設置了特殊的SSH端口,否則這個參數通常是不須要修改的

remote_port = 22

6)host_key_checking

這是設置是否檢查SSH主機的密鑰。能夠設置爲True或False

host_key_checking = False

7)timeout

這是設置SSH鏈接的超時間隔,單位是秒。

timeout = 20

8)log_path

Ansible系統默認是不記錄日誌的,若是想把Ansible系統的輸出記錄到人i治穩健中,須要設置log_path來指定一個存儲Ansible日誌的文件

log_path = /var/log/ansible.log

另外須要注意,執行Ansible的用戶須要有寫入日誌的權限,模塊將會調用被管節點的syslog來記錄,口令是不會出現的日誌中的

9)host_key_checking

若是有臺被管節點從新安裝系統並在known_hosts中有了與以前不一樣的密鑰信息,就會提示一個密鑰不匹配的錯誤信息,直到被糾正爲止,在使用Ansible時,若是有臺被管理節點沒有在known_hosts中被初始化,將會在使用Ansible或定時執行Ansible時提示對key信息的確認。

若是不想出現這種狀況,而且明白禁用此項行爲的含義,只要修改該參數爲False便可

2.3.2 修改hosts文件

Hosts文件爲ansible的主機列表存儲文件,在hosts文件中以組爲單位,如圖下:

將主機地址寫進hosts文件,定義主機組名稱如:webservers

如需安裝redis就另建一個主機組名稱如dbservers

2.3.3 建立目錄

使用yum安裝完成ansible在/etc/目錄下會有ansible目錄在目錄下建立roles目錄。如下爲nginx安裝示範:

在roles目錄下建立如下目錄:

 

將nginx安裝包放在files目錄下,將nginx.conf放在templates目錄下。在各自目錄下建立相應的文件。特別是tasks目錄下的main.yaml要寫以下:

- name: copy package

  copy: src=nginx-1.13.3.tar.gz dest=/usr/local/src/nginx-1.13.3.tar.gz

  tags: cppkg

 

- name: tar nginx

  shell: cd /usr/local/src;tar -xf nginx-1.13.3.tar.gz

 

- name: yum install

  yum: name={{ item }} state=latest

  with_items:

    - openssl-devel

    - pcre-devel

    - gcc

 

- name: install nginx

  shell: useradd nginx;cd /usr/local/src/nginx-1.13.3;./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module  --with-pcre;make && make install

 

- name: copy conf file

  template: src=nginx.conf dest=/usr/local/nginx/conf/nginx.conf

 

- name: systemctl init

  template: src=nginx.service dest=/usr/lib/systemd/system/nginx.service

 

- name: start nginx service

  service: name=nginx state=started enabled=true

 

在/etc/ansible/目錄下編寫nginx.yaml文件,寫入如下內容:

 

使用ansible-playbook –-syntax=check /etc/ansible/nginx.yaml文件的語法示範正確。以下:

 

 

2.4 驗證部署


在服務端上使用ansible的命令驗證是否能鏈接客戶端:

命令含義爲:ansible webservers(組名)-m 指定方式爲shell


-a 要copy的文件和重定向的文件。下面顯示綠色提示爲正常鏈接。在客戶端上查看文件是否存在:


使用ansible-playbook命令安裝客戶端的nginx以下:


提示以下就是安裝完畢,去客戶端上查看nginx是否安裝完成,

 

 

如圖上所示表示安裝完成。

相關文章
相關標籤/搜索