1.开启ssh长连接ansible.cfg ssh_args = -C -o ControlMaster=auto -o ControlPersist=7d ControlPersist=7d整个长连接保持时间;通过ssh连接过的设备都会在当前ansible/cp/目录下生成一个socket文件,通过netstat命令查看会发现一个ESTABLISHED状态的链接一直与远端设备进行TCP链接(SSH版本5.6或之上) 2.开启pipeliningansible.cfg 将本地生成好的python脚本put到远端服务器开启pipelining大大提高整个执行效率;开启pipelining需要被控制机/etc/sudoers 文件编辑当前ansible ssh用户配置为requiretty pipelining = True 3.开启accelerate模式 依赖ansible中控制机和远端机器有一个长链接,accelerate使用python程序在远端机器上运行一个守护进程;开启accelerate,只要在playbook中配置accelerate:true即可;如果开启这个模式,则需要在控制机和远端机器上安装python-keyzar软件包。ansible.cfg中定义一些accelerate参数,例如远端机器监听端口以及一些timeout设置 [accelerate] accelerate_port = 5099 accelerate_timeout = 30 accelerate_connect_timeout = 5.0 4.设置facts缓存 在执行playbook的时候,默认第一个task都是gather_facts,这个过程就是手机每台主机的facts信息,如果不需要这些信息则设置为False提高playbook效率。如果既想每次执行playbook的时候都能收集facts,又想加速收集过程,那么就需要配置facts缓存了。 gathering = smart fact_caching_timeout = 86400 fact_caching = jsonfile fact_caching_connection = /dev/shm/ansible_fact_cache 可以通过redis存储facts信息 gathering = smart fact_caching_timeout = 86400 fact_caching = redis 支持memcached存储facts信息
ansible统一目录结构: production #production环境的inventory文件 stage #stage环境的inventory文件 group_vars/ group #定义变量的文件 group2 host_vars/ hostname1 #定义hostname1的变量文件 hostname2 #定义hostname2的变量文件 library/ #自定义模块存放目录 filter_plugins #自定义filter 插件存放目录 site.yml #playbook统一入口文件 webservers.yaml #特殊任务playbook文件 roles #role存放目录 common/ #common角色目录 tasks/ main.yml #common角色task入口文件 handlers/ #common 角色 handlers入口文件 main.yml templates/ ntp.conf.j2 file/ bar.txt #file资源文件 foo.sh #files资源文件 vars/ main.yml #common 角色变量定义文件 defaults/ main.yml #common 角色变量定义文件(优先级低) meta/ main.yml #common 角色依赖文件 webtier/ #webtier角色目录 monitoring/ fooapp/
目录维护方便与管理方便,其中几个主要目录定义好
灰度发布与检测 1.语法检测: ansible-playbook命令的--syntax-check 2.灰度发布 意思是先挑选一台机器进行测试,这样才知道是否是我们需要的结果 进行预运行是需要把一个或多个task使用delegate_to参数指定到一台设备上进行测试,通过后再进行接下来的工作 3.检查结构是否达到预想 运行playbook的时候使用--check和--diff参数对比生成后的文件是否为我们所需的文件
统一管理 使用gitlab或者GitHub私有仓库进行管理
使用ansible-shell交互命令行 ansible-shell 是GitHub上的一个开源项目,通过交互式的模式把所有ansible的命令Ad-Hoc命令都引入了,支持tab键补齐方式;目前ansible-shell 只支持Ad-Hoc命令不支持playbook. 安装: git clone https://github.com/dominis/ansible-shell.git cd ansible-shell/ python setup.py install 安装后/usr/bin/生成一个ansible-shell命令,可以通过运行ansible-shell命令进入ansible-shell,默认不跟任何参数, 但ansible-shell会引入ansible.cfg里面的参数,当然也可以指定参数,比如指定inventory、ansible-shell -i hosts、sudo模式ansible-shell -s,还可以指定用户信息等等。还可以在ansible.cfg文件中添加对ansible-shell参数定义 [ansible-shell] cwd = 172.19.95.175 forks = 4 默认ansible-shell有几个内置命令 cd 切换inventory对象,支持正则表达式 list 显示当前目录下的主机和主机组列表 forks 临时设置并发数 become 设置become模式,例如su或sudo ! 强制调用shell模块
hellp shell (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|