概述

Ansible是一种自动化运维管理工具,无需安装客户端,通过SSH协议与节点通信。

架构

  由上图可以看出Ansible由5个部分组成

  1. Ansible:核心
  2. Inventory:定义管理主机的清单
  3. Modules:包括Ansible自带的核心模块及自定义模块
  4. Playbooks:Ansible的配置,部署和编排语言(YAML格式)
  5. Plugins:完成模块功能的补充,包括连接插件、邮件插件

安装

yum install ansible or pip install ansible

在管理节点上python要大于等于2.4,如果远端节点python版本小于2.5,需要安装python-simplejson

如果远端节点开启了SELinux,copy/file/template等相关模块必须在远端节点安装了libselinux-python后才能使用

配置

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

[defaults]

inventory            = /etc/ansible/hosts    # 清单文件
forks = # 设置多少进程数与远端节点通信
sudo_user = root # sudo用户
remote_port = # SSH端口号
role_path = /etc/ansible/roles # roles的目录,多个目录以冒号分隔
host_key_checking = True # 第一次执行时是否忽略主机SSH KEY验证
remote_user = root # 远端执行用户

清单

默认清单为/etc/ansible/hosts,-i <path>选项可以指定其它清单,[]里面定义Groups,下面是Hosts

[webservers]
foo.example.com
bar.example.com [dbservers]
one.example.com
two.example.com

主机名alias,主机静态IP,主机ssh密码(不安全,建议使用SSH keys)

[test]
node1 ansible_host=192.168.0.100 ansible_ssh_pass="password"
node2 ansible_host=192.168.0.101 ansible_ssh_pass="password" 

OR

[test]
192.168.0.100
192.168.0.101
[test:vars]
ansible_port=
ansible_user=xxx
ansible_ssh_pass=xxx
ansible_become_method=sudo
ansible_become=true
ansible_become_pass=xxx

使用

1、Ad-Hoc Commands

ad-hoc command是一种快速执行的模式,且不会保存

2、Playbooks

Playbooks是完全不同于adhoc的执行模式,格式是YAML,每个playbook由一个或更多的'plays'组成

just one play:

---
- hosts: webservers
remote_user: root
tasks:- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
handlers:
- name: restart apache
service: name=httpd state=restarted

Basics

Hosts and Users

---
- hosts: webservers
remote_user: root

Tasks List

tasks:
- name: make sure apache is running
service: name=httpd state=started

Handlers: Running Operations On Change

notify:
- restart apache
handlers:
- name: restart apache
service: name=httpd state=restarted

执行Playbook

ansible-playbook playbook.yml

Usage

ansible

Usage: ansible <host-pattern> [options]

Options:
-a MODULE_ARGS # 模块参数
-m MODULE_NAME # 模块名

ansible-playbook

Usage: ansible-playbook playbook.yml

Options:
-C, --check # 不执行,只检查远端节点的状态值
-D, --diff    # 使用文件,模板这些模块的时候,列出两个文件的不同之处,最好与--check结合使用
--syntax-check # 检查playbook的语法是否正确

ansible-doc  # 查看模块的具体用法

Usage: ansible-doc [options] [module...]

Options:
-l, --list # 列出所有的模块
-v, --verbose # 输出更详细的模式

Ansible简介的更多相关文章

  1. 批量搞机(一):ansible简介、ansible安装

    一.ansible简介 Ansible是2013年推出的一款IT自动化和DevOps软件,目前由Redhat已签署Ansible收购协议.其是基于Python研发,糅合了很多老运维工具的优点实现了批量 ...

  2. ansible简介安装配置

    ansible简介 ansible是一款,自动化运维管理工具.顾名思义是用于批量去管理及安装服务及批量管理主机. ansible与saltstack对比 ansible优点:配置简单,部署容易除主管理 ...

  3. Ansible简介及常用模块

    一.基础介绍 1.简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置. ...

  4. Ansible - 简介和应用自动化基础实践

    installAnsible简介和应用自动化基础实践 一.引入: 1.1  如官方定义,Ansible is The simplest way to automate apps and IT infr ...

  5. Ansible 简介

    Ansible 是一个开源的基于 OpenSSH 的自动化配置管理工具.可以用它来配置系统.部署软件和编排更高级的 IT 任务,比如持续部署或零停机更新.Ansible 的主要目标是简单和易用,并且它 ...

  6. 001. Ansible简介

    一 简介 Ansible是一款极其简单的自动化运维工具, 基于Python开发, 集合了众多运维工具(puppet, cfengine, chef, func, fabric)的优点. 实现了批量系统 ...

  7. 1. Ansible 简介

    目录 1. Ansible 是什么? 2. Ansible 特性 3. 控制主机需求 4. 被管理节点需求 1. Ansible 是什么? Ansible 是一个配置管理系统(configuratio ...

  8. ansible简介,简单实用

    Ansible ansilbe是实现自动化运维的工具,基于python开发,实现批量系统配置,批量程序部署,批量运行命令等功能. ansible是基于模块工作的,自身是没有批量部署的能力.真正具有批量 ...

  9. 1、Ansible简介及简单安装、使用

    参考Ansible权威指南:https://ansible-tran.readthedocs.io/en/latest/index.html 以下内容学习自马哥教育 Ansible: 运维工作:系统安 ...

随机推荐

  1. C语言 malloc()与sizeof运算的盲点

    //malloc()与sizeof运算的盲点 #include <stdio.h> #include <stdlib.h> #include <string.h> ...

  2. translateZ 带来的Z-index 问题

    今天遇到了一个问题,当一个3D变换元素translateZ这个属性的值为负值的时候,这个元素的Z-index就不会其作用,解决方法就是translateZ的值必须大于等于0才能让Z-index 起作用 ...

  3. 网游中的网络编程系列1:UDP vs. TCP

    原文:UDP vs. TCP,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年. 目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网 ...

  4. MD5算法的C语言实现

    1 #include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <string.h ...

  5. List<T>与Dictionary<string,T>频繁检索的性能差距

    一直对LINQ简洁高效的语法青睐有加,对于经常和资料库,SQL语法打交道的C#开发者来说,LINQ无疑是一个非常不错的选择,当要在List<T>(T为一个普通对象)集合中查找满足某些条件的 ...

  6. Exif

    Exif是一种图像文件格式,它的数据存储与JPEG格式是完全相同的.实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈.快门.白平衡.ISO.焦距.日期时间等各种和拍摄条件 ...

  7. [转]acm忠告

    多做难题 如果你去问那些牛人“这道题你是怎么想到要用XXX方法的”,我估计大部分人都说不出个所以然来.其实很多情况下都是纯凭直觉考虑到的数个思维方向,这种直觉是需要大量的练习来得到的,没有那么多“为什 ...

  8. JavaWeb之jsp编译为java源码的文件地址

    ..\..\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\project_ ...

  9. 【JQuery】jQuery.inArray 确定第一个参数在数组中的位置

    函数:jQuery.inArray(value,array,[fromIndex]) 解释:         value:用于在数组中查找是否存在         array:待处理数组.       ...

  10. 本机ubuntu链接阿里云服务器(也是ubuntu)

    首先在本机安装ssh工具,并修改配置文件(参考:http://www.cnblogs.com/herd/p/5009067.html) 第一步:ssh 100.121.156.32(即:服务器的ip地 ...