自动化发布ansible以及awx相关(持续更新)
一 本文章只介绍ansible的基础知识以及一些组织架构,如何批量的处理等
首先一套部署发布任务在ansible里面都是以role的形式展现,并在执行命令的时候执行role入口以及主机列表
例如:ansible-playbook -i test_list auto_ingress.yml -e "node=xx role=xxx" -t tags xx --skap-tags=xxx
- -i 指定执行的主机清单
- -e 指定playbook运行参数
- -t 指定运行playbook时候需要使用的标签
- --skip-tags: 指定运行playbook时候需要忽略的标签
二 展示一下我们使用的入口文件
- hosts: "{{ node }}"
gather_facts: no
become: yes #普通用户执行任务
become_user: root #普通用户执行任务
become_method: sudo #普通用户执行任务
vars:
ENV_TYPE: "test"
roles:
- "{{ role }}"
- vars里面添加变量
gather_facts是否需要收集主机信息
三 展示一下工程组织目录

四 对一些常用的模块的使用,直接附上之前使用过的脚本
- name: get logstash
copy: src=logstash-oss-7.11.1-linux-x86_64.tar.gz dest=/tmp/logstash-oss-7.11.1-linux-x86_64.tar.gz force=yes mode=755 - name: mkdir logstash_path
file: path=/home/daho state=directory - name: unarchive package
shell: "tar -zvxf logstash-oss-7.11.1-linux-x86_64.tar.gz -C /home/daho/"
args:
chdir: /tmp - name: director exist or not
stat: path=/etc/logstash-7.11.1
register: logstash_path - name: mkdir logstash_path
file: path=/etc/logstash-7.11.1 state=directory
when: logstash_path.stat.exists == false
- name: start logstash
systemd: name=logstash-7.11.1 enabled=yes state=restarted daemon_reload=yes
- name: Make sure we have a {{ user }} group
group:
name: "{{ user }}"
state: present
- name: Allow {{ user }} group to have passwordless sudo
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%admin'
line: '%admin ALL=(ALL) NOPASSWD: ALL'
- name: Create user {{ user }}
user:
name: "{{ user }}"
shell: /bin/bash
groups: "{{ user }}"
createhome: yes
home: /home/{{ user }}
state: present
- name: create key directory
action: file path=/home/{{ user }}/.ssh/ state=directory owner={{ user }} group={{ user }} mode=0700
- name: create key file
action: file path=/home/{{ user }}/.ssh/authorized_keys state=touch owner={{ user }} group={{ user }} mode=0600
- name: copy ssh pub
blockinfile: path=/home/{{ user }}/.ssh/authorized_keys block="{{ lookup('file', './files/frpc/customer.pub') }}"
- name: get vag soft from remote repo to local
get_url: url={{ vag_remote_package }} url_username=xxx url_password=xxx dest={{ local_vag_path }}
- name: compress package
unarchive: src={{ xxx }}/{{ xxx }} dest={{ xx }} mode=0755 copy=no
- name: detele core
lineinfile: path=/etc/hosts regexp="core$" state=absent
- name: append /etc/hosts
lineinfile: path=/etc/hosts line="{{ xxxx }} core"
- name: touch dirname
file: path={{ xxx }} state=directory
四 test_list清单
[pp]
xx ansible_host=xx ansible_ssh_user=root ansible_ssh_port=22 [k8s]
master ansible_host=xx ansible_ssh_user=root ansible_ssh_password=xxx sn=master
[all:vars]
ansible_ssh_common_args='-o ProxyCommand="ssh -p 22 -W %h:%p -q root@xxx"'
五 ansible的运行优化方式
5.1 开启SSH长连接,具体方法
修改ansible.cfg设置参数
ssh_args = -C -o ControlMaster=auto ControlPersist=5d
ControlPersist=5d
- 开启后,通过ssh连接过的设备会在当前目录 .ansible/cp/目录下生成一个socket文件,通过netstat命令会看到,有ESTABLISHED状态的连接一直与远端保持TCP连接
5.2 开启pipelining
执行流程优化,需要被控制主机/etc/sudoers文件编辑当前ansible ssh用户的配置为requiretty,否则在执行的时候会报错 sudo:sorry,you must have a tty to run sudo
并且在ansible.cfg上面配置参数
pipelining = True
5.3 开启accelerate模式
accelerate在远端服务器上面运行一个守护进程
开启accelerate需要管理与被管理端都需要安装python-keyczar包
[accelerate]
#accelerate_port = 5900
#accelerate_timeout = 30
#accelerate_connect_timeout = 5.0
5.4 关闭facts
配置如下所示
gather_facts: False
六 ansible的任务需要重启之后继续执行的办法(亲测有效)

七 一个功能
有一种场景,当我们的主机里面具有私钥,但是又不是默认的位置,这时候我们需要在/etc/ansible/ansible.cfg里面添加私钥位置,之后就可以实现免密登录来完成ansible的Task

自动化发布ansible以及awx相关(持续更新)的更多相关文章
- iOS动画相关(持续更新)
1.When my application is entering background, because the user push the home button, the animations ...
- css3布局相关(持续更新)
1三栏布局,两边定宽,中间自适应 2让文字位于div元素的正中央 3不管浏览器窗口如何变化,让一张图片始终显示在浏览器正中央.
- JS 字符串处理相关(持续更新)
一.JS判断字符串中是否包含某个字符串 indexOf() indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置.如果要检索的字符串值没有出现,则该方法返回 -1. var str ...
- 十、api自动化环境问题及解决方案汇总(持续更新)
1.jenkins报错: Unable to read /root/.jenkins/config.xml at hudson.WebAppMain$3.run(WebAppMain.java:248 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js
BAT 前端开发面经 —— 吐血总结 目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...
- Github 持续化集成 工作流 Npm包自动化发布
Github 持续化集成 工作流 Npm包自动化发布 简介 持续集成指的是,频繁地(一天多次)将代码集成到主干. 它的好处主要有两个: 快速发现错误.每完成一点更新,就集成到主干,可以快速发现错误 ...
- 开源小程序CMS网站, JeeWx-App-CMS 1.1 版本升级发布,持续更新!
JeeWx-App-CMS开源小程序CMS网站,持续更新ing~ JeeWx-App-CMS 是jeewx开发的小程序网站开源项目,基于小程序wepy语言,具备cms网站的基本功能,能够打造简单易用的 ...
- (持续更新) C# 面试技术点、常见SQL技术点 和 解决高并发的相关技术
这篇博客 持续更新. 方便小伙伴们学习与面试前的复习
- 个人开源项目testall 持续更新中···
项目在GitHub上:https://github.com/x113773/testall ,喜欢的给个星星呀,亲~ 打算把用到过的和学习过的,所有前后端技术都集成到这个项目里,并在issues里配以 ...
随机推荐
- pyqt5报错:qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "" This ap
环境: win10 Python 3.7.5 vs code 解决方法: 新建环境变量,然后重启 vs code 就可以了 QT_QPA_PLATFORM_PLUGIN_PATH C:\Users\ ...
- 刪除k个数字后的最小值
前言 比如说 1593212,去掉一个数字后,保留的是最小值. 原理:因为要保留最小值,那么要删除最高位的数字是最明显的. 那么1和5到底删除哪一个呢?当然是删除最大值了. 代码 public sta ...
- android虚拟机硬件加速问题
前言 创建的android 虚拟机的如果我们选择x86,那么会出现需要硬件加速. 步骤 那么打开虚拟功能后可以进行安装,SDK Manager-> Extras->Intel Hardwa ...
- Pytorch DistributedDataParallel(DDP)教程二:快速入门实践篇
一.简要回顾DDP 在上一篇文章中,简单介绍了Pytorch分布式训练的一些基础原理和基本概念.简要回顾如下: 1,DDP采用Ring-All-Reduce架构,其核心思想为:所有的GPU设备安排在一 ...
- 笔记本电脑上的聊天机器人: 在英特尔 Meteor Lake 上运行 Phi-2
对应于其强大的能力,大语言模型 (LLM) 需要强大的算力支撑,而个人计算机上很难满足这一需求.因此,我们别无选择,只能将它们部署至由本地或云端托管的性能强大的定制 AI 服务器上. 为何需要将 LL ...
- navicat连接mysql8报错
mysql8采用更安全的加密方式,navicat不支持,网上大多办法都是采用的更改数据库加密方式为外部加密 个人觉得这样它不太合适 so,终于找到一个办法: 把mysql8安装后的lib文件夹里的 l ...
- 《Effective C#》系列之(零)——概要
把全书的内容讲述完整可能需要很长时间,我可以先回答主要目录和核心的内容.如果您有任何特定问题或需要更详细的解释,请告诉我. <Effective C#>一书共包含50条C#编程建议,以下是 ...
- Vue-flask 展示小电影
显示小电影 前端Vue <body> <div id="app"> <button @click="handleLoad"> ...
- dva使用yarn编译出错
1. 报错信息 ./src/models/example.jsModule build failed: TypeError: /Users/user/Desktop/learn-code/10.Rea ...
- Docker 安装,常用命令
安装Docker 官方所有操作系统安装教程:Install Docker Engine on CentOS | Docker Documentation,其中CentOS安装docker引擎的代码: ...