简介:

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能,无客户端。

自动化运维,首先要做的就是部署环境

在ansible服务器上要解析,这里我只用了两台客户机,一台 服务器

vim /etc/hosts

192.168.122.159 ansible

192.168.122.160 host1

192.168.122.161 host2

自动化运维工具分类 自动化运维项目实战_linux

这些内容都是要写进本地的hosts文件当中的,注意是在192.168.122.159   ansible服务器上, 不是客户机。在客户机上配置好yum源和ip的一些配置就好。
	在ansible服务器上下载ansible 
	yum install -y ansible

自动化运维工具分类 自动化运维项目实战_apache_02


自动化运维工具分类 自动化运维项目实战_apache_03


检查:

自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_04


自动化运维工具分类 自动化运维项目实战_apache_05


自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_06


自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_07


自动化运维工具分类 自动化运维项目实战_运维_08


两台客户端服务器,一台做免密,一台不做免密

自动化运维工具分类 自动化运维项目实战_运维_09


自动化运维工具分类 自动化运维项目实战_nginx_10


定义主机清单

自动化运维工具分类 自动化运维项目实战_运维_11


自动化运维工具分类 自动化运维项目实战_linux_12


自动化运维工具分类 自动化运维项目实战_apache_13


自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_14


自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_15


子分组

自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_16


自动化运维工具分类 自动化运维项目实战_linux_17


自定义发:ansible -i hostlist dockers -m ping -o

Ad-Hoc-点对点模式

1、简介:临时的,在ansible中是指需要快速执行的单条命令,并且不需要保存的命令。对于复杂的命令则为 playbook。2、复制模块

ansible-doc copy 命令帮助

自动化运维工具分类 自动化运维项目实战_运维_18


自动化运维工具分类 自动化运维项目实战_运维_19


自动化运维工具分类 自动化运维项目实战_运维_20


自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_21


自动化运维工具分类 自动化运维项目实战_nginx_22


创建用户

自动化运维工具分类 自动化运维项目实战_apache_23


自动化运维工具分类 自动化运维项目实战_nginx_24


自动化运维工具分类 自动化运维项目实战_linux_25


修改密码

自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_26


自动化运维工具分类 自动化运维项目实战_运维_27


软件包模块

ansible host2 -m yum -a ‘name=“httpd” state=latest’

服务模块

ansible host2 -m service -a ‘name=httpd state=started’

文件服务

ansible host1 -m file -a ‘path=/tmp/88.txt mode=777 state=touch’

自动化运维工具分类 自动化运维项目实战_linux_28


自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_29


收集模块

ansible host3 -m setup -a ‘filter=ansible_all_ipv4_addresses’

自动化运维工具分类 自动化运维项目实战_linux_30


YAML-YAML Ain’t Markup Language-非标记语言需求

通过YAML编写一个简单的剧本,完成web的部署,配置,启动的全过程。

示例:

自动化运维工具分类 自动化运维项目实战_运维_31


自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_32


自动化运维工具分类 自动化运维项目实战_运维_33


编写剧本:

  • hosts: host2
    tasks:
  • name: install apache packages
    yum: name=httpd state=present
  • name: copy apache conf
    copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf
  • name: ensure apache is running
    service: name=httpd state=started enabled=yes

自动化运维工具分类 自动化运维项目实战_apache_34

自动化运维工具分类 自动化运维项目实战_linux_35


自动化运维工具分类 自动化运维项目实战_运维_36


自动化运维工具分类 自动化运维项目实战_apache_37


当我们再次修改端口号时,我们就需要再次修改apache.yaml ,在次执行ansible-playbook ,之前的端口就登录不上了。

自动化运维工具分类 自动化运维项目实战_apache_38


自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_39


自动化运维工具分类 自动化运维项目实战_linux_40


Role-角色扮演

准备目录结构

mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p
touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml
echo 1234 > roles/nginx/files/index.html
yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2

自动化运维工具分类 自动化运维项目实战_运维_41


编写任务

自动化运维工具分类 自动化运维项目实战_运维_42


准备配置文件:

自动化运维工具分类 自动化运维项目实战_自动化运维工具分类_43


编写变量:

自动化运维工具分类 自动化运维项目实战_nginx_44


编写剧本:

自动化运维工具分类 自动化运维项目实战_apache_45


检测语法问题:

ansible-playbook site.yaml --syntax-check

之后运行,ansible-playbook site.yaml

自动化运维工具分类 自动化运维项目实战_linux_46


登录验证:

自动化运维工具分类 自动化运维项目实战_运维_47