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


首先安装ansible,这个程序包是由epel源提供的,因此要指定好源,而后yum  install  ansible就能够了nginx

172.16.249.195centos7)作管理端,而后172.16.249.115centos7)和172.16.249.36centos6)作被管理端web

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

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

 

简单应用:负载均衡

使用主机密钥来进行链接其余主机,ssh

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

 spacer.gif

而后把公钥提供给远程被管理的主机测试

spacer.gif

通常也要管理本身,因此把这个公钥也复制一份给本身ui

wKioL1Y4J3jTR_yqAAIJfZ7Aqhc967.jpg

而后测试下,不用密钥,就能够链接了url

wKioL1Y4JxvgLMi6AAJ1J5Ek-k0045.jpg

spacer.gif

spacer.gif

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

 

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

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

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

修改以下:

spacer.gif

而后在执行命令

spacer.gif

能够看到执行成功了

还可让所有主机执行这个命令

spacer.gif

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'

spacer.gif

user:建立用户的

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

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

spacer.gif

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这个文件以下:

wKiom1Y4LbDTN4xRAAFI74idLdY193.jpg

而后建立一个目录ansible_keepalived,而后在这个目录下建立一些目录

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

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

相关文章
相关标签/搜索