一 本文章只介绍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相关(持续更新)的更多相关文章

  1. iOS动画相关(持续更新)

    1.When my application is entering background, because the user push the home button, the animations ...

  2. css3布局相关(持续更新)

    1三栏布局,两边定宽,中间自适应 2让文字位于div元素的正中央 3不管浏览器窗口如何变化,让一张图片始终显示在浏览器正中央.

  3. JS 字符串处理相关(持续更新)

    一.JS判断字符串中是否包含某个字符串 indexOf() indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置.如果要检索的字符串值没有出现,则该方法返回 -1. var str ...

  4. 十、api自动化环境问题及解决方案汇总(持续更新)

    1.jenkins报错: Unable to read /root/.jenkins/config.xml at hudson.WebAppMain$3.run(WebAppMain.java:248 ...

  5. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  6. BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js

    BAT 前端开发面经 —— 吐血总结   目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...

  7. Github 持续化集成 工作流 Npm包自动化发布

    Github 持续化集成 工作流 Npm包自动化发布 简介   持续集成指的是,频繁地(一天多次)将代码集成到主干. 它的好处主要有两个: 快速发现错误.每完成一点更新,就集成到主干,可以快速发现错误 ...

  8. 开源小程序CMS网站, JeeWx-App-CMS 1.1 版本升级发布,持续更新!

    JeeWx-App-CMS开源小程序CMS网站,持续更新ing~ JeeWx-App-CMS 是jeewx开发的小程序网站开源项目,基于小程序wepy语言,具备cms网站的基本功能,能够打造简单易用的 ...

  9. (持续更新) C# 面试技术点、常见SQL技术点 和 解决高并发的相关技术

    这篇博客 持续更新. 方便小伙伴们学习与面试前的复习

  10. 个人开源项目testall 持续更新中···

    项目在GitHub上:https://github.com/x113773/testall ,喜欢的给个星星呀,亲~ 打算把用到过的和学习过的,所有前后端技术都集成到这个项目里,并在issues里配以 ...

随机推荐

  1. 三步就能在OpenHarmony中实现车牌识别

    介绍 本车牌识别项目是基于开源项目 EasyPR(Easy to do Plate Recognition)实现.EasyPR 是一个开源的中文车牌识别系统,基于 OpenCV 开源库开发. 本项目使 ...

  2. Go 语言注释教程

    注释是在执行时被忽略的文本.注释可用于解释代码,使其更易读.注释还可用于在测试替代代码时防止代码执行.Go支持单行或多行注释. Go单行注释 单行注释以两个正斜杠(//)开头. 在//和行尾之间的任何 ...

  3. 面向切面编程AOP[三](java AnnotationAwareAspectJAutoProxyCreator实现了什么功能)

    前言 要查看一个类实现了什么功能,那么查看它继承的接口或者class即可知道,那么其到底继承了什么? 正文 AnnotationAwareAspectJAutoProxyCreator extends ...

  4. 妙用 drop-shadow 实现线条光影效果

    本文将介绍一种利用 CSS 滤镜 filter 的 drop-shadow(),实现对 HTML 元素及 SVG 元素的部分添加阴影效果,以实现一种酷炫的光影效果,用于各种不同的场景之中.通过本文,你 ...

  5. 图片验证码识别,标签中onehot编码对应多个1怎么做?

    一张验证码图片直接做整体识别 也就是图片的最后输出节点有4*26=104个,经过一个softmax,使用交叉熵损失,与真实值4*26=104个标签做计算,然后反向传播 104个onehot编码真实值当 ...

  6. RocketMQ 之 IoT 消息解析:物联网需要什么样的消息技术?

    前言: 从初代开源消息队列崛起,到 PC 互联网.移动互联网爆发式发展,再到如今 IoT.云计算.云原生引领了新的技术趋势,消息中间件的发展已经走过了 30 多个年头. 目前,消息中间件在国内许多行业 ...

  7. Dubbo-go 优雅上下线设计与实践

    ​简介:在分布式场景下,微服务进程都是以容器的形式存在,在容器调度系统例如 k8s 的支持下运行,容器组 Pod 是 K8S 的最小资源单位.随着服务的迭代和更新,当新版本上线后,需要针对线上正在运行 ...

  8. 简单、有效、全面的Kubernetes监控方案

    ​简介:近年来,Kubernetes作为众多公司云原生改造的首选容器化编排平台,越来越多的开发和运维工作都围绕Kubernetes展开,保证Kubernetes的稳定性和可用性是最基础的需求,而这其中 ...

  9. Hologres如何支持超高基数UV计算(基于roaringbitmap实现)

    简介: 本文将会介绍Hologres基于roaringbitmap实现超高基数的UV计算 RoaringBitmap是一种压缩位图索引,RoaringBitmap自身的数据压缩和去重特性十分适合对于大 ...

  10. 快速上手 Serverless | 入门第一课

    简介: 本文从云计算抛砖引玉,详解 Serverless 的典型应用场景和一些产品介绍. 一. 从云计算到 Serverless 自世界上第一台通用计算机 ENIAC (图左)诞生以来,计算机科学与技 ...