ansible安装与核心组件详解

1、安装anisble

1.1 安装epel源

[root@ansible ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

1.2 Yum安装ansible

[root@ansible ~]# yum install  -y

1.3 验证安装结果

[root@ansible ~]# 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、 Ansible核心组件详解

2.1 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通信使用

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

ansible.png

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配置文件

绝大多数保持默认就行

[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@ansible ~/.ssh]# ansible node3 -m ping node3 
| success >> { 
"changed": false, 
"ping": "pong" } 
[root@ansible ~/.ssh]#




[root@ansible ~/.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主机清单配置

直接指明主机地址或者主机名
定义一个主机组。把主机地址或者主机名写进去,通过调用主机组来操作主机
如果没有使用公钥,想要使用密码,可以定义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的主机)

上一篇:vpn客户端连接

下一篇:ansible模块

文章发布自:刘俊辉的个人博客,转载请注明出处,谢谢!