• Ansible 详细用法部署安装


    摘要: absible 部署安装

    #一、概述
    运维工具按需不需要有代理程序来划分的话分两类:

    agent(需要有代理工具):基于专用的agent程序完成管理功能,puppet, func, zabbix

    agentless(无须代理工具):基于ssh服务完成管理,ansible, fabric
    #二、简介

      Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。主版本大概每2个月发布一次。

      Ansible与Saltstack最大的区别是Ansible无需在被控主机部署任何客户端代理,默认直接通过SSH通道进行远程命令执行或下发配置:相同点是都具备功能强大、灵活的系统管理、状态配置,两者都提供丰富的模板及API,对云计算平台、大数据都有很好的支持。

    1.特点

    • 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作; 默认使用SSH协议对设备进行管理;
    • 主从集中化管理;
    • 配置简单、功能强大、扩展性强;
    • 支持API及自定义模块,可通过Python轻松扩展;
    • 通过Playbooks来定制强大的配置、状态管理;
    • 对云计算平台、大数据都有很好的支持;
    • 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。
    • 幂等性:一种操作重复多次结果相同

    简评:
    (1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
    (2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
    (3)、使用python编写,维护更简单,ruby语法过于复杂;
    (4)、支持sudo。
    2、Ansible架构图
    QQ_20170524110419

    Ansible核心组件说明:

    • Ansible:Ansible的核心程序
    • Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载

    • Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.

    • Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。

    • Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。

    • Connection Plugins:连接插件,Ansible和Host通信使用

    3、ansible执行过程,其中暖色调的代表已经模块化。
    screenshot

    三、基础环境的安装与配置

    1、ssh免密登录 配置 一直回车
    ```ssh-keygen -N ''

    
    
    2、shell脚本复制到101-150服务器
    
    ```for i in `seq 101 150`
    do
    /usr/bin/expect << EOF
    spawn ssh-copy-id bfadmin@192.168.100.$i
    expect {
    "yes/no" { send "yes
    "; exp_continue; }
    "*password" { send "P@ssw0rd
    " }
    }
    
    expect "~$ "
    send "exit
    "
    expect eof
    
    EOF
    done
    

    3、安装Ansible 环境 及pssh 环境包

    sudo sed  -i  -re  's/w+.archive.ubuntu.com/archive.ubuntu.com/g'  /etc/apt/sources.list 
    sudo apt-get update
    sudo wget http://www.theether.org/pssh/pssh-1.4.3.tar.gz #下载PSSH安装包
    tar zxvf pssh-1.4.3.tar.gz
    cd pssh-1.4.3
    sudo wget 'http://peak.telecommunity.com/dist/ez_setup.py'
    sudo python ez_setup.py 
    sudo python setup.py install
    sudo apt-get install software-properties-common
    sudo apt-add-repository ppa:ansible/ansible
    sudo apt-get install ansible
    

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

    host_key_checking = False

    5.主机清单
    /etc/ansible/hosts

    6.ansible命令的使用说明
    常用选项

    ansible -m MOD_NAME -a MOD_ARGS
    表示调用什么模块,使用模块的那些参数

    ansible -h

    [root@localhost ~]# ansible -h
    Usage: ansible [options]

    Options:
    -a MODULE_ARGS, --args=MODULE_ARGS 模块的参数,如果执行默认COMMAND的模块,即是命令参数,如:“date”,"pwd"等等
    module arguments 模块参数
    -k, --ask-pass ask for SSH password 登录密码,提示输入SSH密码而不是假设基于密钥的验证
    --ask-su-pass ask for su password su切换密码
    -K, --ask-sudo-pass ask for sudo password 提示密码使用sudo,sudo表示提权操作
    --ask-vault-pass ask for vault password
    -B SECONDS, --background=SECONDS 后台运行超时时间
    run asynchronously, failing after X seconds
    (default=N/A)
    -C, --check don't make any changes; instead, try to predict some 只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化
    of the changes that may occur
    -c CONNECTION, --connection=CONNECTION 连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用于crontab或启动。
    connection type to use (default=smart)
    -f FORKS, --forks=FORKS 并行任务数。NUM被指定为一个整数,默认是5
    specify number of parallel processes to use
    (default=5)
    -h, --help show this help message and exit 打开帮助文档API
    -i INVENTORY, --inventory-file=INVENTORY 指定库存主机文件的路径,默认为/etc/ansible/hosts
    specify inventory host file
    (default=/etc/ansible/hosts)
    -l SUBSET, --limit=SUBSET 进一步限制所选主机/组模式 --limit=192.168.91.135 只对这个ip执行
    further limit selected hosts to an additional pattern
    --list-hosts outputs a list of matching hosts; does not execute
    anything else
    -m MODULE_NAME, --module-name=MODULE_NAME 执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数
    module name to execute (default=command)
    -M MODULE_PATH, --module-path=MODULE_PATH 要执行的模块的路径,默认为/usr/share/ansible/
    specify path(s) to module library
    (default=/usr/share/ansible/)
    -o, --one-line condense output 压缩输出,摘要输出.尝试一切都在一行上输出。
    -P POLL_INTERVAL, --poll=POLL_INTERVAL 调查背景工作每隔数秒。需要- b
    set the poll interval if using -B (default=15)
    --private-key=PRIVATE_KEY_FILE 私钥路径,使用这个文件来验证连接
    use this file to authenticate the connection
    -S, --su run operations with su 用 su 命令
    -R SU_USER, --su-user=SU_USER 指定SU的用户,默认是root用户
    run operations with su as this user (default=root)
    -s, --sudo run operations with sudo (nopasswd)
    -U SUDO_USER, --sudo-user=SUDO_USER sudo到哪个用户,默认为 root
    desired sudo user (default=root)
    -T TIMEOUT, --timeout=TIMEOUT 指定SSH默认超时时间, 默认是10S
    override the SSH timeout in seconds (default=10)
    -t TREE, --tree=TREE log output to this directory 将日志内容保存在该输出目录,结果保存在一个文件中在每台主机上。
    -u REMOTE_USER, --user=REMOTE_USER 远程用户, 默认是root用户
    connect as this user (default=root)
    --vault-password-file=VAULT_PASSWORD_FILE
    vault password file
    -v, --verbose verbose mode (-vvv for more, -vvvv to enable 详细信息
    connection debugging)
    --version show program's version number and exit 输出ansible的版本

  • 相关阅读:
    iOS设计模式:观察者
    Java面向接口编程小例子
    《The DeadLine》(《最后期限》) 读后感
    Codeforces Round #395 Div1的A题Timofey and a tree
    重写和强制转换再调用能编译但不能运行
    Java继承和静态-加载顺序
    C++之pair
    用Java面向对象思想实现一个微博的功能(未完)
    Java对象在内存图示
    Java中OOP对象和引用
  • 原文地址:https://www.cnblogs.com/jzy996492849/p/6903846.html
Copyright © 2020-2023  润新知