Ansible简介

概述

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                = 5                     # 设置多少进程数与远端节点通信
sudo_user            = root                  # sudo用户
remote_port          = 22                    # 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=22
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    # 输出更详细的模式
原文地址:https://www.cnblogs.com/metasequoia/p/3937078.html