首先安装ansible,这个程序包是由epel源提供的,所以要指定好源,然后yum  install  ansible就可以了

172.16.249.195centos7)做管理端,然后172.16.249.115centos7)和172.16.249.36centos6)做被管理端

配置文件在/etc/ansible/ansible.cfg

/etc/ansible/hosts主机清单,简单来说就是要管理的主机列表

 

简单应用:

使用主机密钥来进行连接其他主机,

使用ssh-keygen  -t  rsa  -P’’生成一个密码,

 Ansible的基础知识,以及ansible的应用_ansible自动化安装keepaliv

然后把公钥提供给远程被管理的主机

Ansible的基础知识,以及ansible的应用_ansible自动化安装keepaliv_02

一般也要管理自己,所以把这个公钥也复制一份给自己

Ansible的基础知识,以及ansible的应用_ansible自动化安装keepaliv_03

然后测试下,不用密钥,就可以连接了

Ansible的基础知识,以及ansible的应用_ansible自动化安装keepaliv_04

Ansible的基础知识,以及ansible的应用_ansible自动化安装keepaliv_05

Ansible的基础知识,以及ansible的应用_Ansible的基础知识_06

可以看到没问题了,这样就可以根据主机密码,来管理远程主机了

 

在装有ansible程的远程主机上运行一个命令:

                                               ansible172.16.249.36 -m command -a 'ifconfig'   这个里的主机要在主机清单里,要不然会说找不到主机的

然后修改/etc/ansible/hosts文件(主机清单的配置文件),(首先复制一份,作为备份)

修改如下:

Ansible的基础知识,以及ansible的应用_Ansible的基础知识_07

然后在执行命令

Ansible的基础知识,以及ansible的应用_Ansible的基础知识_08

可以看到执行成功了

还可以让全部主机执行这个命令

Ansible的基础知识,以及ansible的应用_ansible自动化安装keepaliv_09

ansible的常用模块

172.16.249.195centos7)做管理端,然后172.16.249.115centos7)和172.16.249.159centos7)做被管理端

  ansible的命令格式:

      ansible  <host-pattern>  [-f forks]  [-m module_name] [-a args]   argskey=value

     ansible-doc  –l :列出所有的模块

常用模块:

command:输入命令的模块(可以省略),不过都是简单的命令,复杂的带管道的需要使用shell模块

-a  ‘COMMAND’

    例:ansible all-a 'ifconfig'或者ansible all –m command -a 'ifconfig'

shell

-a  ‘COMMAND’

    例:ansiblewebsrvs -m shell -a 'echo "<h1>Hello Word</h1>"  > /tmp/test.tmp'

Ansible的基础知识,以及ansible的应用_Ansible的基础知识_10

user:创建用户的

    -a 'name=state={present|absent} system= uid='

        例: ansibleall -m user -a 'name=user1 state=present'

Ansible的基础知识,以及ansible的应用_ansible自动化安装keepaliv_11

group:创建组

     -a 'name= gid= state=system='

cron:周期性任务

-a 'name=minute= hour= day= month= weekday= job= user= state='

copy:复制

    -a 'dest= src= mode=owner= group='

file:文件相关的操作

    -a 'path= mode= owner=group= state={directory|link|present|absent} src='

ping:探测主机是否在线

    没有参数

yum:程序包管理

     -a 'name=state={present|latest|absent}'

service:服务相关的操作

    -a 'name=state={started|stopped|restarted} enabled='

script:脚本相关的

    -a '/path/to/script'

setup:系统的详细信息

这些就不再演示了,

 

  playbook的核心元素:

tasks: 任务

variables: 变量

templates: 模板

handlers: 处理器

roles: 角色


变量:

        facts

--extra-vars "name=value name=value"

role定义

Inventory中的变量:

主机变量

    hostname name=value name=value

组变量

[groupname:vars]

name=value

name=value

Inventory的高级用法:


Playbook的结构:

      -host: 

      vars:

       remote_user: 

   tasks:(可以有多个)

   variables:(可以有多个)

   handlers:(可以有多个)

      - host: 

  - host: 

下面以一个示例来演示ansible的使用,使用ansible安装一个高可用的nginx负载均衡集群(keepalived+nginx),

keepalived的实现使用ansible的角色加剧本实现(实现的过程不再说明,示例的代码在附件中)

 首先要编辑/etc/ansible/hosts这个文件如下:

Ansible的基础知识,以及ansible的应用_Ansible的基础知识_12

然后创建一个目录ansible_keepalived,然后在这个目录下创建一些目录

mkdir -pv ansible_keepalived/roles/{synctime,keepalived,nginx,}/{files,templates,vars,tasks,handlers,meta}

 然后在这些目录里加入文件,具体不在演示,查看附件里的文件就可以了,配置都在里面。如果不理解的可以查看官网文档或者跟本人留言。