2-29 使用自动化运维工具Ansible 集中化管理服务器

 本机所讲内容

29.1  ansible 概述和运行机制

29.2  实战-安装并配置Ansible  管理节点

29.3  ansible  常见高级模块使用方法

39.4  实战-使用Playbook 批量部署多台LAMP  环境


1  )  安装需要的安装包  安装epel  源

  yum  install epel-release 

2  ) yum  安装Ansiable   

[root@xuegod1 ~]# yum install ansible -y

3  )  检查版本 

ansiable     


4  ) 

4 )


29.2.3    定义主机清单

1  基于端口,用户,密码定义主机清单


打开主机清单并配置

  1 )

2 )


3  )  首先登录远程的IP地址

4  ) 退出开始连接测试

192.168.1.64  ansible_ssh_port=22  ansible_ssh_user=root  ansible_ssh_pass=123456

                                                                                     名字必须和hosts定制的一致

测试一下主机的联通性

5 ) [root@xuegod1 ansible]# ansible -i /etc/ansible/hosts web-servers -m ping


6  )

7  )  生成公钥和私钥



9 ) 

10 )  此时我们直接可以在  ansible   的目录中修改hosts 

  直接设置为ip地址

 [root@xuegod63 ~]# vim /etc/ansible/hosts  #在文件的最后添加以下内容

删除之前在最后添加的两行主机清单:

[web-servers]

192.168.1.64  ansible_ssh_port=22  ansible_ssh_user=root  ansible_ssh_pass=123456

增加:

[web-servers]

192.168.24.62

192.168.24.68

11 )  测试联通性

[root@xuegod1 ansible]# ansible -i /etc/ansible/hosts 'web-servers' -m ping 


    检查更新时间
12  )  [root@xuegod1 ansible]# ansible -m command -a "uptime" web-servers


例3  检查用户内核  

例3  添加用户节点 


例5 ,将df 命令在所有节点执行后,重定向输出到本地的/tmp/command-output.txt  文件中

[root@xuegod1 ansible]# ansible -m command -a "df -Th" 'web-servers' >a.txt



[root@xuegod1 ansible]# ansible -i /etc/ansible/hosts 'web-servers' -m shell -a "free -m"


例1

[root@xuegod1 ansible]# ansible -i /etc/ansible/hosts 'web-servers' -m shell -a "source ~/.bash_profile && df -h | grep sda3"


例2  编写一个脚本 

#! /bin/bash

date

hostname

[root@xuegod1 ansible]# vim net.sh

[root@xuegod1 ansible]# ansible -i /etc/ansible/hosts  'web-servers' -m script  -a  "/etc/ansible/net.sh"


2  copy  模块 :实现主控端想目标主机拷贝文件,类似scp 功能

例1  : 把ansible  主机上的  /etc/hosts   文件复制到主机中机器的/tmp  目录下

[root@xuegod1 ansible]# ansible -i /etc/ansible/hosts 'web-servers' -m copy -a "src=/etc/hosts dest=/tmp/ owner=root group=root mode=0777"


3  file  模块设置文件属性

  可以查看和设置属性 

[root@xuegod1 ansible]# ansible 'web-servers' -m file -a "path=/tmp/hosts mode=0755"


4   stat  模块获取远程文件信息

 ansible -i /etc/ansible/hosts web-servers -m stat -a "path=/tmp/hosts"

5  ) [root@xuegod1 ansible]# ansible -i /etc/ansible/hosts 'web-servers' -m get_url -a "url=https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm dest=/tmp/ mode=0440 force=yes"

6  yum   模块 linux 平台软件包管理

yum   模块可以提供的status 状态    latest,present     installed 是按照 ,remove    absent    这两个是卸载

按照php 

[root@xuegod1 ansible]# ansible -i /etc/ansible/hosts 'web-servers' -m yum -a "name=php state=latest"

7  cron  模块远程主机crontab  配置

  例如 : 增加没30分钟执行ls  /tmp 


8  service  模块远程主机系统服务管理

  service  模块常用参数

按照apache 

[root@xuegod1 ansible]# ansible -i /etc/ansible/hosts 'web-servers' -m yum -a "name=httpd state=latest"

远程启动apache     

[root@xuegod1 ansible]# ansible -i /etc/ansible/hosts 'web-servers' -m service -a "name=httpd state=restarted"

9  sysctl  模块远程主机sysctl  配置

例  :  开启路由转发功能

  验证

[root@xuegod1 ansible]# ansible -i /etc/ansible/hosts 'web-servers' -m sysctl -a "name=net.ipv4.ip_forward value=1 reload=yes"


10

11 ) 

 二  实战-使用Play   book  批量部署多台LAMP环境


29.4.1   实战-使用Playbook  批量部署多台LAMP  环境

  playbook  常用文件夹作用

files :存放需要同步到异地服务器的源码文件及配置文件

handlers:  当服务的配置文件发生变化时,需要进行的操作,比如,重启服务,重新加载配置文件  

处理程序

meta  :  角色定义,可留空

tasks    需要进行的执行的任务

templates  用于执行lamp  安装的模板文件,一般为脚本

vars  :   本次安装定义的变量

29.4.2   使用Playbook  批量部署多台LAMP 环境

首先,我们可以在ansible  服务器安装LAMP  环境,然后,在将配置文件通过ansible   拷贝到远程主机

1  )  安装http的

yum install httpd -y

安装mysql  

[root@xuegod1 ansible]# yum install mariadb-server mysql -y


3  )  创建目录

第二步安装mysql 

[root@xuegod1 ansible]# mkdir -p /mydata/data

[root@xuegod1 ansible]# chown -R mysql:mysql  /mydata/ 

[root@xuegod1 ansible]# vim  /etc/my.cnf 



安装php 和php-mysql 木块 

yum install php php-mysql   -y 

第四步 提供php  的测试页面

[root@xuegod1 ansible]# vim /var/www/html/index.php  

[root@xuegod1 ansible]# iptables -F

重启apache  

systemctl  restart   httpd  

  第六步  浏览器浏览


httpd

7  )  优化主配置文件

[root@xuegod1 html]# vim /etc/httpd/conf/httpd.conf



 9  )

创建相关文件

mkdir -pv /etc/ansible/lamp/roles/{prepare,httpd,mysql,php}/{tasks,files,templates,vars,meta,default,handlers}

我们将上面搭建成功的LAMP  环境的httpd 和mysql  的配置文件拷贝到对应目录下

[root@xuegod1 roles]# cd /etc/ansible/

[root@xuegod1 ansible]# cp /etc/httpd/conf/httpd.conf    lamp/roles/httpd/files/ 

[root@xuegod1 ansible]# cp /etc/my.cnf lamp/roles/mysql/files/ 

vim lamp/roles/prepare/tasks/main.yml

文件中写入

- name: delete yum config

  shell: rm -rf /etc/yum.repos.d/*  #删除原有的yum配置文件

- name: provide yumrepo file

  shell: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo   #下载新的yum配置文件

- name: clean the yum repo

  shell: yum clean all    #清除原有的yum缓存信息

- name: clean the iptables

  shell: iptables -F    #清除原有防火墙规则,不然后可能上不了网

2   构建http的  的任务

[root@xuegod1 roles]# mv /var/www/html/index.php httpd/files/

[root@xuegod1 roles]# ls httpd/files/ 

httpd.conf  index.php

[root@xuegod1 roles]#

[root@xuegod1 roles]# vim httpd/tasks/main.yml

- name: web server install

  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运行。

3  构建httpd 的handlers  

[root@xuegod1 roles]# vim httpd/handlers/main.yml

- name: restart httpd

  service: name=httpd enabled=yes state=restarted

 

4、部署我们的mariadb数据库

创建MySQL服务的任务,需要安装MySQL服务,改变属主信息,启动MySQL

[root@xuegod63 roles]# cd /etc/ansible/lamp/roles

[root@xuegod63 roles]# vim mysql/tasks/main.yml

- 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、构建PHP的任务

[root@xuegod63 roles]# vim 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交互的插件

 

6、定义整个的任务

[root@xuegod63 roles]# cd /etc/ansible/lamp/roles

[root@xuegod63 roles]# vim site.yml    #写入以下内容

- name: LAMP build

  remote_user: root

  hosts: web-servers

  roles:

    - prepare

    - mysql

    - php

- httpd

7  )  开始测试

你可能感兴趣的:(2-29 使用自动化运维工具Ansible 集中化管理服务器)