zoukankan      html  css  js  c++  java
  • 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    # 输出更详细的模式
  • 相关阅读:
    PHP-FPM详解
    Nginx与PHP交互过程 + Nginx与PHP通信的两种方式
    cgi,fast-cgi,php-cgi,php-fpm转载详解
    ( 转 ) mysql复合索引、普通索引总结
    快速搭建ELK日志分析系统
    高并发
    多线程
    关于MySQL中查询大数据量的情况下分页limit的性能优化
    电商搜索引擎的架构设计和性能优化
    MYSQL优化之碎片整理
  • 原文地址:https://www.cnblogs.com/metasequoia/p/3937078.html
Copyright © 2011-2022 走看看