Ansible安装及简单使用

简介:

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)、连接插件connection plugins:负责和被监控端实现通信;

(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)、各种模块核心模块、command模块、自定义模块;

(4)、借助于插件完成记录日志邮件等功能;

(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

架构:

blob.png

连接其他主机默认使用ssh协议

host inventory:主机组名称

安装ansible:

[root@stu ~]# yum install ansible-1.5.4-1.el6.noarch.rpm

查看生成的文件:

/etc/ansible
/etc/ansible/ansible.cfg   #配置文件
/etc/ansible/hosts   #主机库(host inventory)
/usr/bin/ansible   #主程序
/usr/bin/ansible-doc   #文档
/usr/bin/ansible-playbook   #剧本

命令:

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

    host-pattern:host inventory文件的一个组名,可以为all

    -f forks:并行处理的个数,默认为5

    -m module_name:模块名,默认为command

    -a args:参数

ansible-doc:

    -l:查看模块列表

    -s:查看相关模块参数

实验:

一台控制节点(安装ansible),三台被控制节点

控制节点:

1、名称解析
[root@stu ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.20 stu
192.168.0.21 node1
192.168.0.22 node2
192.168.0.23 node3
2、建立互信
[root@stu ~]# ssh-keygen -t rsa  -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
5e:b9:38:77:4f:d9:e9:ae:94:cd:29:4b:c5:0f:1a:2b root@stu
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|           .  .  |
|        S o . .o |
|       . o . +=++|
|        + E +=o=o|
|         o ooo+  |
|             o+o |
+-----------------+
[root@stu ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1
[root@stu ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2
[root@stu ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node3
3、定义主机组
[root@stu ~]# vim /etc/ansible/hosts
:.,$s/^\([^[:space:]#]\)/#\1/g   #所有以非空白字符或#开头的行都加上注释
[webservers]
node1
node2
[dbservers]
node2
node3

ping测试:

blob.png

date测试:

blob.png

copy测试:(可以使用ansible-doc -s copy查看)

[root@stu ~]# ls
anaconda-ks.cfg  ansible-1.5.4-1.el6.noarch.rpm  install.log  install.log.syslog
[root@stu ~]# ansible dbservers -m copy -a "src=/root/ansible-1.5.4-1.el6.noarch.rpm dest=/tmp/"

blob.png

检查:

blob.png

cron测试:

[root@stu ~]# ansible all -m cron -a 'name="custom job" minute=*/3 hour=* day=* month=* weekday=* job="/usr/sbin/ntpdate 192.168.0.20"'

blob.png

检查:

blob.png

group测试:

blob.png

检查:

blob.png

yum测试:

[root@stu ~]# ansible all -m yum -a "state=present name=corosync"

检查:

blob.png

service测试:

blob.png

blob.png

blob.png

blob.png

剧本:

剧本需要依赖yaml语言来工作,后缀一般为.yaml。

其结构(Structure)通过空格来展示,序列(Sequence)里的项用"-"来代表,Map里的键值对用":"分隔。下面是一个示例。

实验1:

[root@stu ~]# vim test.yaml
- hosts: all
  remote_user: root
  tasks:
   - name: add a group
     group: gid=1000 name=testgroup system=no
   - name: excute a command
     command: /bin/date

blob.png

是把一个任务在所有主机都执行一遍,再执行第二个任务

handler:适用于更改配置文件后,让其生效

实验2:

[root@stu ~]# cp /etc/httpd/conf/httpd.conf ./
[root@stu ~]# vim httpd.conf
Listen 8080
[root@stu ~]# vim web.yaml
- hosts: all
  remote_user: root
  tasks:
   - name: ensure apache is the latest version
     yum: state=latest name=httpd
   - name: apache configure file
     copy: src=/root/httpd.conf dest=/etc/httpd/conf/httpd.conf force=yes
     notify:
      - restart httpd   #此处和下面的要一样
  handlers:
   - name: restart httpd
     service: name=httpd state=restarted

blob.png

验证8080:(不支持管道)

blob.png

blob.png

其他知识:

找rpm可以在以下两个位置:

http://rpmfind.net/

https://pkgs.org/



原创文章,作者:黑白子,如若转载,请注明出处:http://www.178linux.com/30693

(0)
黑白子黑白子
上一篇 2016-08-07
下一篇 2016-08-08

相关推荐

  • MySQL入门书籍和方法分享

    原文:http://cenalulu.github.io/mysql/mysql-book-for-newbie/           作者: 卢钧轶     本文罗列了一些适用于MySQL及运维入门和进阶使用的书籍。 背景:各大论坛上总是…

    Linux干货 2015-04-09
  • iptables:防火墙以及网络协议基本原理

    一、 Linux 网络安全模型      1. 防火墙: 工作在主机或者网络边缘,对进出报文使用实现定义的规则进行检测,并且由匹配的规则进行处理的一组硬件或者软件。也可能两者结合。          1) 通常使用的防火…

    Linux干货 2015-07-24
  • 利用keepalived实现主/从和主/主模式的高性能负载均衡集群

    要求: 1、使用nginx的反向代理功能实现负载均衡 2、keepalived实现高可用        第一组的虚拟地址为172.16.1.100             D设备的优先级高        第二组的虚拟地址为172.16.1.110             E设备的优先级高 3、分别实现主/从和主/主两种配置 集群拓扑:       第一种:主…

    2017-06-25
  • 马哥教育网络班21期+第7周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;     fdisk /dev/sdb    n p 1 +10G w (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl…

    Linux干货 2016-08-22
  • Οι κωδικοποιητές software πίσω από τη συλλογή παιχνιδιών του Efbet Casino

    Όταν εξερευνάτε την πολυποίκιλη συλλογή παιχνιδιών του Efbet Casino, έρχεστε σε επαφή με το έργο προηγμένων ομάδων ανάπτυξης που έχουν μεταμορφώσει την πλατφόρμα από το 2006. Η πρό…

    Linux干货 4天前
  • 包管理工具rpm和yum的用法

    包管理工具rpm和yum的用法 一、rpm的用法 rpm原本是Rde Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐收到其他发行版的采用,RPM套件管理方式的出现,让Linux易于安装、升级,间接提升了Linux的适用性。 rpm用法:rpm [OPTION…] 1、rpm安装…

    Linux干货 2016-08-24