Centos7上安装Ansible和基础应用

Ansible

简介

ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:自动化部署APP;自动化管理配置项;自动化的持续交互;自动化的(AWS)云服务管理。所有的这几个目标从本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。通俗的说就是批量的在远程服务器上执行命令 。当然,最主要的是它是基于 paramiko 开发的。这个paramiko是什么呢?它是一个纯Python实现的ssh协议库。因此fabric和ansible还有一个共同点就是不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。简单归纳一下:

Ansible

—基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作

类似的自动化运维工具有很多常用的还有:

Puppet

—基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱

SaltStack

—基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量级,配置语法使用 YMAL,使得配置脚本更简单

Ansible工作机制

Ansible 在管理节点将 Ansible 模块通过 SSH 协议(或者 Kerberos、LDAP)推送到被管理端执行,执行完之后自动删除,可以使用 SVN 等来管理自定义模块及编排

ansible.png

由上面的图可以看到 Ansible 的核心组件组成由 5 个部分组成:

    Ansible core:            核心;

    core Modules:          包括 Ansible 自带的核心模块及自定义模块;

    connect Plugins:            完成模块功能的补充,包括连接插件、邮件插件等;

    Playbooks:       网上很多翻译为剧本,个人觉得理解为编排更为合理;定义 Ansible 多任务配置文件,由 Ansible 自动执行;

    host Inventory:         定义 Ansible 管理主机的清单、主机池、主机列表;

 

一、ansible安装配置:

1、yum安装ansible

        yum install ansible (ansible依赖于Python 2.6或更高的版本、paramiko、PyYAML及Jinja2。)

2、ansible的master/clinet认证方法:

    a、基于SSH密钥认账(默认认证)

        ssh-keygen -t rsa    ssh-copy-id -i /root/.ssh/id_rsa.pub  root@node1

    b、在inventory文件中制定用户名和密码认账

        方法:vim /etc/ansible/hosts添加

                client_host ansibly_ssh_user=root ansible_ssh_pass=password

3、ansible配置hosts主机:

hosts.jpg

4、ansible命令应用基础:    

    语法:ansible <host-pattern> [-f forks] [-m module_name] [-a args]
                -f启动多个个主机执行任务 -m要使用的模块 -a模块特有的参数

 

二、ansible常用模块:

1、command:命令模块,默认模块,用于在远程执行命令,不支持变量。ansible 192.168.139.128 -a 'date'   

ansible-date.jpg

2、cron:计划任务模块:ansible 192.168.139.128 -m cron -a 'minute="*/10" job="/bin/echo "hell"" name="test job" '

cron.jpg

client-cron.jpg

3、user:用户管理模块:ansible webserver -m user -a 'name="node1" '

master-user.jpg

client-user.jpg

4、copy:远程复制模块

    a、复制文件至远程主机:ansible webserver -m copy -a 'src=/etc/motd dest=/tmp/moth owner=root mode=640'

    master-copy.jpg

    b、往远程主机文件写入内容:使用content代替src。

        ansible webserver -m copy -a 'content="ansible test\n test" dest=/tmp/moth '

5、file:设置文件属性模块

    a、设置指定文件属性:ansible webserver -m file -a 'owner=mysql group=mysql mode=644 path=/etc/motd'  

    file-master.jpg

    client-file-link.jpg

b、创建文件符号链接:ansible webserver -m file -a ' path=/tmp/motd.link src=/etc/motd state=link'

    file-link.jpg

    client-file-link.jpg

6、ping:测试指定主机网络是否通讯:ansible webserver -m ping 

master-ping.jpg   

7、service:指定服务状态模块管理(必须保证远程主机事先安装好指定服务)

    enableed:是否开机自动启动 true/false
     name:服务名称
     start:状态,取值为startd,stopd,restartd

ansible webserver -m service -a 'enabled=true name=httpd state=started'

httpd-service.jpg

8、shell模块: 在远程主机上运行命令,支持管道、变量等在使用复制命令时使用。

ansible webserver -m shell -a 'echo password |passwd –stdin node1' 

shell-master.jpg

9、script:将本地脚步复制到远程主机上并运行(注意本地主机脚步路径使用相对路劲)

ansible webserver -m script -a "test.sh"

master-script-shell.jpg10、yum:程序安装
      name:指定要安装的程序包,可以带上版本号  state:preset,laster表示安装最新,absent卸载

yum-master.jpgyum-client1.jpg

11、setup:收集远程主机的facts ansible hostname -m setup

      每个被管理节点在接受并运行管理命令之前,会将自己主机相关信息,操作系统版本、ip地址等会报告给ansible主机
      用于将状态报告给ansible主机直接调用其变量。

12、查看模块帮助命令:
         ansible-doc -l  ansible-doc -s Modules 查看支持模块

   感谢马哥,每天进步一点点!  

原创文章,作者:n18-jude,如若转载,请注明出处:http://www.178linux.com/14860

(2)
n18-juden18-jude
上一篇 2016-04-14 19:16
下一篇 2016-04-15 10:24

相关推荐

  • Nginx配置详解

    NginX 回顾http协议: 1.URL格式 URL:shceme://username:password@host:port/path;params?query#fram 2.http事务:     request:请求报文格式       reponse:响应报文…

    Linux干货 2016-10-25
  • 系统基础之压缩归档工具详解

    压缩和解压缩工具 概论  在使用操作系统时,我们常会遇到大文件,会使我们很头疼.在面对时间和空间上的选择,只能选择空间,这就要用到压缩工具和归档工具,下面为大家一一介绍.  压缩文件只压缩文本格式的文件,通常不压缩已经是压缩的文件.  压缩文件就会涉及到压缩比:    原理:通过了解文本文件的数据形式,运用压…

    Linux干货 2016-08-18
  • http

    http http:hyper text transfer protocol, 应用层协议, 80/tcp, 文本协议 html:hyper text mark language, 是一种编程语言,超文本标记语言; html格式示例: <html> <head> <title>TITLE</title> &lt…

    Linux干货 2017-06-04
  • 网络班22期学习宣言

    马哥Linux运维学院 学习宣言 亲爱的小伙伴:        欢迎大家报名马哥Linux运维网络学习班,跟随马哥学习Linux技术,成就Linux大牛之梦。在这里,我们不仅可以学习到最优秀的技术课程,还可以跟着追梦的小伙伴们一起学习、一起进步。 为了督促大家一直积极认真努力的学习,请各位同学在评论区写出你的学习宣言。…

    Linux干货 2016-08-03
  • VIM编辑器用法及练习

    VIM编辑器用法及练习 什么是vim? vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。 Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现…

    Linux干货 2016-10-30
  • 关于TCP/IP与OSI模型基础学习

    关于TCP/IP与OSI模型基础学习 §·OSI七层模型介绍 OSI(Open system interconnection 开放系统互联),七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机。OSI 七层模型是一种框架性的设计方法 ,建立七层模型的主要目的…

    Linux干货 2016-09-05