zoukankan      html  css  js  c++  java
  • ansible安装与核心组件详解

    第1章 安装anisble

    1.1 安装epel源

    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

    1.2 Yum安装ansible

    yum install ansible -y

    1.3 验证安装结果

    [root@qtbackup ~]# ansible --version
    ansible 2.3.1.0
      config file = /etc/ansible/ansible.cfg
      configured module search path = Default w/o overrides
      python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]
    [root@qtbackup ~]#
    

    第2章 Ansible核心组件详解

    2.1 Ansible核心组件说明:

    l  Ansible:Ansible的核心程序

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

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

    l  Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;

    l  Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。

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

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

     

    2.2 .ansible执行过程,其中暖色调的代表已经模块化

    2.3 Ansible命令集合

    /usr/bin/ansible: # Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行
    /usr/bin/ansible-doc: # Ansible 模块功能查看工具
    /usr/bin/ansible-galaxy: # 下载/上传优秀代码或Roles模块的官网平台,基于网络的
    /usr/bin/ansible-playbook: # Ansible 定制自动化的任务集编排工具
    /usr/bin/ansible-pull: # Ansible远程执行命令的工具(使用较少,海量机器时使用,对运维的架构能力要求较高)
    /usr/bin/ansible-vault: # Ansible 文件加密工具
    /usr/bin/ansible-console: # Ansible基于Linux Consoble界面可与用户交互的命令执行工具
    /usr/share/ansible_plugins:Ansible高级自定义插件目录(需要python基础)
    /etc/ansible/ansible.cfg:配置文件
    /etc/ansible/hosts:主机清单

    2.4 Ansible配置文件

    绝大多数保持默认就行

    1)[defaults] 
    #inventory = /etc/ansible/hosts # 主机列表配置文件 
    #library = /usr/share/my_modules/ # 库文件存放目录 
    #remote_tmp = $HOME/.ansible/tmp # 生成的临时py命令文件存放在远程主机的目录
    #local_tmp = $HOME/.ansible/tmp # 本机的临时命令执行目录 
    #forks = 5 # 默认并发数 
    #poll_interval = 15 # 默认的线程池 
    #sudo_user = root # 默认sudo 用户 
    #ask_sudo_pass = True 
    #ask_pass = True 
    #transport = smart 
    #remote_port = 22 
    #module_lang = C 
    #module_set_locale = False 
    host_key_checking = False ### 检查对应服务器的host_key 
    (2)[privilege_escalation] 
    (3)[paramiko_connection] 
    (4)[ssh_connection] 
    (5)[accelerate] 
    (6)[selinux] 
    (7)[colors]

    2.5 Ansible命令使用说明

    #调用ping模块检测node3主机是否存活(node2,3,4能基于主机名通信,且已做过免密钥通信) [root@node2 ~/.ssh]# ansible node3 -m ping node3 
    | success >> { 
    "changed": false, 
    "ping": "pong" } 
    [root@node2 ~/.ssh]#
    
    
    
    
    
    [root@node2 ~/.ssh]# ansible -h
    Usage: ansible <host-pattern> [options]
    
    Options:
      -a MODULE_ARGS, --args=MODULE_ARGS    #模块的参数,如果执行默认COMMAND的模块,即是命令参数,如:“date”,"pwd"等等
                            module arguments    #模块参数
      --ask-become-pass     ask for privilege escalation password # Ansible su切换用户的时候使用该参数输入密码
      -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  # ansible-valut 加密文件
      -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)
      -e EXTRA_VARS, --extra-vars=EXTRA_VARS  # 调用外部变量
      -f FORKS, --forks=FORKS    # Ansible一次命令执行并发的线程数,默认是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的版本

    第3章 Ansible核心配置文件讲解

    3.1 Ansible主机清单配置

    l  直接指明主机地址或者主机名

    l  定义一个主机组。把主机地址或者主机名写进去,通过调用主机组来操作主机

    l  如果没有使用公钥,想要使用密码,可以定义ansible_ssh_pass=”主机密码”

    3.2 主机名或主机地址定义

    Server1       #主机名

    172.1.1.1.     #主机地址

    3.3 主机组定义

    [webservers]
    Server1
    Server2
    Server3
    或
    192.168.1.1
    192.168.1.2
    192.168.1.3
    或  (使用通配符)
    Server[001:100]  (表示从server001 - server100的主机)

     

  • 相关阅读:
    30天养成一个好习惯
    ym——安卓巴士总结了近百个Android优秀开源项
    内存泄漏以及常见的解决方法
    Android学习笔记(四十):Preference的使用
    Android中View绘制流程以及invalidate()等相关方法分析
    NumberFormat 类
    开发人员福利!ChromeSnifferPlus 插件正式登陆 Chrome Web Store
    memset函数具体说明
    分分钟教会你使用HTML写Web页面
    UVA 465 (13.08.02)
  • 原文地址:https://www.cnblogs.com/Carr/p/7446917.html
Copyright © 2011-2022 走看看