欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

002. Ansible部署及配置介绍

程序员文章站 2022-05-02 12:17:11
一 Ansible的安装部署 1.1 PIP方式 略,可参考《001.Pip简介及使用》。 提示:建议将PIP升级到最新:pip install --upgrade pip。 1.2 YUM方式 二 Ansible目录及配置 2.1 Ansible目录结构 配置文件目录:/etc/ansible 主 ......

一 ansible的安装部署

1.1 pip方式

  1. 安装pip

略,可参考《001.pip简介及使用》。

提示:建议将pip升级到最新:pip install --upgrade pip。

  1. 安装依赖
  1 [root@manage ~]# yum -y install gcc glibc-devel zlib-devel rpm-build openssl-devel
  1. 安装ansible
  1 [root@manage ~]# pip install ansible

  1 [root@manage ~]# ansible --version		#查看版本

1.2 yum方式

  1. 安装epel源
  1 [root@manage ~]# sudo yum install -y epel-release
  2 [root@manage ~]# sudo sed -e 's!^mirrorlist=!#mirrorlist=!g' \
  3          -e 's!^#baseurl=!baseurl=!g' \
  4          -e 's!//download\.fedoraproject\.org/pub!//mirrors.ustc.edu.cn!g' \
  5          -e 's!http://mirrors\.ustc!https://mirrors.ustc!g' \
  6          -i /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing.repo
  1. 安装依赖
  1 [root@manage ~]# yum -y install gcc glibc-devel zlib-devel rpm-build openssl-devel
  1. 安装ansible
  1 [root@manage ~]# yum -y install ansible
  2 [root@manage ~]# ansible --version		#查看版本

二 ansible目录及配置

2.1 ansible目录结构

  1 # rpm -ql ansible

配置文件目录:/etc/ansible

主要功能:inventory主机信息配置、ansible工具功能配置,所有ansible配置均存放在该目录下;

执行文件目录:/usr/bin

主要功能:ansible系列命令默认存放目录,ansible所有可执行文件均存放在该目录下。

lib库文件目录:/usr/lib/pythonx.x/site-packages/ansible

主要功能:系统当前默认的python路径。

help帮助文档目录:/usr/share/doc/ansble-x.x.x/

主要功能:ansible所有相关帮助文件存放目录。

man文档目录:/usr/share/man/man1/

2.2 ansible配置文件解析

ansible配置文件ansible.cfg默认位于/etc/ansible/目录下。

提示:ansible.cfg配置文件可以位于多个目录下,ansible读取配置文件的顺序为:当前命令执行目录——>用户家目录下的.ansible.cfg——>/etc/ansible/ansible.cfg.其ansible.cfg配置的所有内容均可在命令行通过参数的形式传递或定义在playbook中。

  1 #……
  2 #inventory      = /etc/ansible/hosts		#定义inventory
  3 #library        = /usr/share/my_modules/	        #自定义lib库存放目录
  4 #module_utils   = /usr/share/my_module_utils/
  5 #remote_tmp     = ~/.ansible/tmp		        #临时文件远程主机存放目录
  6 #local_tmp      = ~/.ansible/tmp		        #临时文件本地存放目录
  7 #plugin_filters_cfg = /etc/ansible/plugin_filters.yml
  8 #forks          = 5				        #默认开启的并发数
  9 #poll_interval  = 15				#默认轮询时间间隔
 10 #sudo_user      = root				#默认sudo用户
 11 #ask_sudo_pass = true				#是否需要sudo密码
 12 #ask_pass      = true				#是否需要密码
 13 #transport      = smart				#通信机制.默认值为’smart’

提示:如果本地系统支持 controlpersist技术的话,将会使用(基于openssh)‘ssh’,如果不支持将使用‘paramiko’.其他传输选项包括‘local’, ‘chroot’,’jail’等。

  1 #remote_port    = 22				#远程ssh端口,默认是22
  2 #module_lang    = c				        #模块和系统之间通信的计算机语言,默认是c语言
  3 #module_set_locale = false
  4 #gathering = implicit
  5 #控制默认facts收集(远程系统变量),默认值为’implicit’, 每一次play,facts都会被收集
  6 #gather_subset = all				#定义获取fact的子集,默认全部
  7 # gather_timeout = 10
  8 #roles_path    = /etc/ansible/roles		        #默认下载的roles存放的目录
  9 #host_key_checking = false			        #首次连接是否需要检查key认证,建议设置为false
 10 #stdout_callback = skippy
 11 #callback_whitelist = timer, mail
 12 #task_includes_static = false
 13 #handler_includes_static = false
 14 #error_on_missing_handler = true
 15 #sudo_exe = sudo
 16 #如果在其他远程主机上使用另一种方式执sudu操作.可以使用该参数进行更换
 17 #sudo_flags = -h -s -n					#传递sudo之外的参数
 18 #timeout = 10						#默认超时时间
 19 #remote_user = root
 20 #使用/usr/bin/ansible-playbook链接的默认用户名,如果不指定,会使用当前登录的用户名
 21 #log_path = /var/log/ansible.log			        #执行日志存放目录
 22 #module_name = command					#默认执行模块
 23 #executable = /bin/sh					#用于执行脚本得解释器
 24 #在sudo环境下产生一个shell交互接口. 用户只在/bin/bash的或者sudo限制的一些场景中需要修改
 25 #hash_behaviour = replace				        #特定的优先级覆盖变量
 26 #private_role_vars = yes

提示:默认情况下,角色中的变量将在全局变量范围中可见。为了防止这种情况,可以启用以上选项,只有tasks的任务和handlers得任务可以看到角色变量。

  1 #jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n	#允许开启jinja2拓展模块
  2 #private_key_file = /path/to/file			#私钥文件存储位置
  3 #vault_password_file = /path/to/vault_password_file	#指定vault密码文件路径
  4 #ansible_managed = ansible managed: {file} modified on %y-%m-%d %h:%m:%s by {uid} on {host}
  5 #定义一个jinja2变量,可以插入到ansible配置模版系统生成的文件中
  6 #ansible_managed = ansible managed
  7 #display_skipped_hosts = true				#显示任何跳过任务的状态,默认是显示
  8 #display_args_to_stdout = false
  9 #error_on_undefined_vars = false
 10 #如果所引用的变量名称错误的话, 是否让ansible在执行步骤上失败
 11 #system_warnings = true
 12 #允许禁用系统运行ansible相关的潜在问题警告
 13 #deprecation_warnings = true
 14 #允许在ansible-playbook输出结果中禁用“不建议使用”警告
 15 # setting or adding warn=yes or warn=no to the end of the command line
 16 # command_warnings = false
 17 #当shell和命令行模块被默认模块简化的时,ansible将默认发出警告
 18 #nocolor = 1						        #输出带上颜色区别, 开启/关闭:0/1
 19 #action_plugins     = /usr/share/ansible/plugins/action		#action插件存放目录
 20 #cache_plugins      = /usr/share/ansible/plugins/cache		#cache插件存放目录
 21 #callback_plugins   = /usr/share/ansible/plugins/callback	        #callback插件存放目录
 22 #connection_plugins = /usr/share/ansible/plugins/connection	        #connection插件存放目录
 23 #lookup_plugins     = /usr/share/ansible/plugins/lookup		#lookup插件存放目录
 24 #inventory_plugins  = /usr/share/ansible/plugins/inventory	        #inventory插件存放目录
 25 #vars_plugins       = /usr/share/ansible/plugins/vars		#vars插件存放目录
 26 #filter_plugins     = /usr/share/ansible/plugins/filter		#filter插件存放目录
 27 #test_plugins       = /usr/share/ansible/plugins/test
 28 [privilege_escalation]
 29 #become=true			#是否sudo
 30 #become_metrod=sudo		        #sudo方式
 31 #become_user=root		        #sudo后变为root用户
 32 #become_ask_pass=false		#sudo后是否验证密码

提示:出于安全考虑,可能需要以普通用户权限并赋予sudo来执行,以上部分配置主要针对sudo用户提权配置。

  1 [paramiko_connection]
  2 #record_host_keys=false		#不记录新主机的key以提升效率
  3 #pty=false			        #禁用sudo功能
  4 [ssh_connection]
  5 #scp_if_ssh = true		        #若连接类型是ssh,使ansible使用scp
  6 #pipelining=false		        #管道加速,需配合requiretty使用方可生效

提示:ansible默认使用ssh协议连接对端主机,ssh pipelining 是一个加速ansible执行速度的简单方法。ssh pipelining 默认关闭,之所以默认关闭是为了兼容不同的sudo配置,主要是requiretty选项。若不使用sudo,建议开启。打开此选项可以减少ansible执行没有传输时ssh在被控机器上执行任务的连接数。不过,若使用sudo,必须关闭requiretty选项。

  1 [accelerate]
  2 #accelerate_port=5099		#加速连接端口
  3 #accelerate_timeout=30		#命令执行超时时间,单位为秒
  4 #accelerate_connect_timeout=5.0	#连接超时时间,单位为秒
  5 #accelerate_daemon_timeout=30	#上一个活动连接的时候,单位为分钟
  6 #accelerate_multi_key=yes

提示:以上部分为提升ansible连接速度配置,多数保持默认即可。

  1 [selinux]
  2 #libvirt_lxc_noseclabel=yes
  3 #将此设置为yes,以允许libvirt_lxc连接在没有selinux的情况下工作。
  4 [colors]
  5 #highlight = white
  6 #verbose = blue
  7 #warn = bright purple
  8 #error = red
  9 #debug = dark gray
 10 #deprecate = purple
 11 #skip = cyan
 12 #unreachable = red
 13 #ok = green
 14 #changed = yellow
 15 #diff_add = green
 16 #diff_remove = red
 17 #diff_lines = cyan

参考文档:https://www.jianshu.com/p/443f612c3d5c