ansible-playbookagent实例

author author     2022-08-19     339

关键词:


        最近看ansible自动化运维工具,前段时间刚好有需求。最近发布系统上线,需要安装agent,400多台服务器手动安装当然费事,《ansible自动化运维》华章出的也看了80多页了,就试着写了一个agent推送和zabbix-agent推送,主要是发布系统agent推送,之前的zabbix-agent推送已经写成shell脚本推送,这边就不显摆了。公司也是刚用ansible,线上都是脚本自动化。


以下比较简单:

ansible play-book的树行结构如下:


主要是推发布系统的agent:


$ tree
.
├── agent.yaml
├── ansible.cfg
├── desheng.list
├── file.list
├── file.sh
├── hosts
├── hosts_agent
├── hosts_new
├── logstash.retry
├── logstash.yaml
└── roles
    ├── agent
    │   ├── files
    │   │   └── agent.tgz
    │   ├── handlers
    │   ├── stop.sh
    │   ├── tasks
    │   │   └── main.yaml
    │   ├── templates
    │   └── vars
    │       └── main.yaml
    ├── logstash
    │   ├── files
    │   │   └── logstash-2.4.1.tar.gz
    │   ├── handlers
    │   ├── tasks
    │   │   └── main.yaml
    │   ├── templates
    │   │   ├── logstash.j2
    │   │   └── logstash.j2.bak
    │   └── vars
    └── zabbix_agent
        ├── files
        │   └── zabbix.tar.gz
        ├── handlers
        │   └── main.yml
        ├── tasks
        │   └── main.yaml
        ├── templates
        │   └── zabbix_agentd.conf.j2
        └── vars
            └── main.yaml

agent play-book的树形结构如下:

$ tree agent
agent
├── files
│   └── agent.tgz
├── handlers
├── stop.sh
├── tasks
│   └── main.yaml
├── templates
└── vars
    └── main.yaml

$ cat main.yaml  #ansible-playbook tasks的内容

- name: pkill agent process
  script: /etc/ansible/roles/agent/stop.sh
- name: remove link
  file: path={{ agent_home }}/{{ bag }}  state=absent
- name: scp agent
  copy: src=agent.tgz dest={{ agent_home }}
- name: tar zxf agent.tgz
  shell: chdir={{ agent_home }} tar -zxf agent.tgz
- name: link
  file: src={{ agent_home }}/{{ bag }}-{{ version }} dest={{ agent_home }}/{{ bag }} state=link
- name: running agent
  shell: cd {{ agent_home }}/{{ bag }} && nohup python swift_agent.py > agent.log  2>&1 &
- name: remove agent.tgz
  file: path={{ agent_home }}/agent.tgz state=absent

#vars 主要是定义几个变量。

$ cat main.yaml 
agent_home: /data
user: ody
version: v3.0
bag: agent

#ansible的当下目录放一个stop脚本,主要是发布新的agent是杀掉在运行的agent进程。

$ cat stop.sh 
#!/bin/bash
ps -ef | grep python | grep -v "grep" | awk ‘{print $2}‘ | xargs kill -9


本文出自 “LINUX Super梦” 博客,请务必保留此出处http://215687833.blog.51cto.com/6724358/1886323

精通matlab最优化计算的实例目录

参考技术A第2章MATLAB计算基础例2-1元胞数组创建与显示实例。20例2-2矩阵创建实例。22例2-3特殊矩阵生成函数使用实例。23例2-4矩阵基本运算实例。24例2-5矩阵函数运算实例。24例2-6矩阵分解运算函数使用实例。25例2-7复数构造实例... 查看详情

如何根据另一个实例组中的实例数来扩展实例组

】如何根据另一个实例组中的实例数来扩展实例组【英文标题】:HowtoscaleInstanceGroupbasingonthenumberofinstancesinsideanotherinstancegroup【发布时间】:2020-01-1310:45:07【问题描述】:如何根据另一个实例组中正在运行的虚拟机数量为实例组... 查看详情

awsemr实例组竞价实例扩展失败切换按需实例方法

背景本文介绍如何解决EMR集群实例组模式下竞价实例请求失败后无法切换到按需实例问题,本文通过CloudWatch+Lambda实现在EMR集群竞价实例请求失败情况下补充制定数量的按需实例到EMR集群。目前较多公司使用EMR构建大数据平台,... 查看详情

jQueryFileTree 如何清除实例、重新实例化新实例或刷新

】jQueryFileTree如何清除实例、重新实例化新实例或刷新【英文标题】:jQueryFileTreeHowtoclearinstance,reinstantiatenewinstanceorrefresh【发布时间】:2016-04-0811:13:21【问题描述】:我正在使用jQueryFileTree。通过javascriptajax(旧式javascriptxmlhttp请... 查看详情

6.静态方法和实例方法

...静态方法;  作用:简化编程,方便调用。  (2)实例方法:不含static关键字的即为实例方法。即使用实例对象调用的方法;2、方法调用(实例)  (1)实例方法可以使用类的任何成员,即静态和实例成员。  (2)... 查看详情

多实例学习的可变实例数

】多实例学习的可变实例数【英文标题】:VariablenumberofinstancesforMultipleInstanceLearning【发布时间】:2021-05-3017:44:52【问题描述】:我正在尝试针对二进制分类问题进行多实例学习,其中每个实例包都有一个关联的标签0/1。但是,... 查看详情

0 个实例与 Elastic Beanstalk 单实例?

】0个实例与ElasticBeanstalk单实例?【英文标题】:0instanceswithElasticBeanstalkSingleInstances?【发布时间】:2016-05-1818:32:35【问题描述】:我克隆了一个有1个实例并且是单实例环境的环境。我克隆了它,现在我有一个包含0个实例的单实... 查看详情

sqlserver啥是实例?

就是一个在数据库中存在的,现实的数据库例子!数据库实例就是后台进程和数据库文件的集合。一个SQLServer服务器就是一个实例,2000支持在同一个NT/2000Server操作系统装多个服务器,换言之,就是多个实例。多个SQLServer实例Micr... 查看详情

ALAssetsLibrary 多个实例与全局实例开销

】ALAssetsLibrary多个实例与全局实例开销【英文标题】:ALAssetsLibrarymultipleinstancesvsglobalinstanceoverhead【发布时间】:2014-07-1515:10:41【问题描述】:分配多个ALAssetsLibrary实例而不是使用一个实例访问多个资产的开销是多少?从相反的... 查看详情

原型链怎样给类下面的实例添加实例属性和实例方法

...到prototype这个关键字了,通过这个关键字可以给类下面的实例添加实例属性和方法,话不多说,直接上代码代码实例如下:functionPerson(name){this.name=name;}varp1=newPerson("zhangsan");Person.prototype.age=18;//为类下面的实例添加实例属性Person.p... 查看详情

如何获取 Lightsail 实例的实例名称

】如何获取Lightsail实例的实例名称【英文标题】:HowdoIgettheinstancenameofaLightsailinstance【发布时间】:2019-07-0821:21:23【问题描述】:如何找到“此”Lightsail实例的名称。“This”是正在执行aws命令的实例。我的下面的脚本不起作用,... 查看详情

vue3实例属性实例方法(代码片段)

//通过Vue实例对象可以直接访问的属性,称为实例属性      实例属性都以$开头      vm.$el:当前Vue实例使用的根dom元素      vm.$data:当前Vue实例观察的数据对象      vm.$options:当前Vue实例的初始化选项      vm.$re... 查看详情

实例变量作为其他实例变量的函数

】实例变量作为其他实例变量的函数【英文标题】:Instancevariableasfunctionofotherinstancevariables【发布时间】:2020-03-2202:15:52【问题描述】:是否可以将一个类中的实例变量定义为另一个类的函数?除非您一直重新定义“函数实例变... 查看详情

类属性和实例属性(代码片段)

类属性:直接在class中定义属性,通过类或者实例名称都可以访问,所有实例都可以共享。实例属性:通过self绑定属性,或者通过实例名动态添加属性。使用中,实例属性和类属性最好不要同名,不然会出现意想不到的问题。cla... 查看详情

创建实例后向 Vue 实例添加组件

】创建实例后向Vue实例添加组件【英文标题】:AddcomponentstoVueinstanceafterinstanceiscreated【发布时间】:2018-01-1712:15:19【问题描述】:如果你已经创建了一个像这样的VueJS实例......varapp=newVue(埃尔:\'#app\',成分:...)是否可以将组件... 查看详情

sqlserver中“实例”指的是啥?

一套唯一的系统和用户数据库吗所谓的实例实际上就是一个服务,在管理工具的服务里面能看到。默认的实例名是跟机器名相同的。多个SQLServer实例Microsoft®SQLServer™2000支持在同一台计算机上同时运行多个SQLServer数据库引... 查看详情

类的实例方法(代码片段)

实例方法method语法:class类名(继承列表):def实例方法名(self,参数1,参数2,...):‘文档字符串‘语句作用:用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为说明:1.实例方法实质是函数,是定义在类内的函数2.实例方法至少... 查看详情

单实例和多实例的区别以及用途

1.单实例和多实例单实例一般会在类中自己实例化,通过getInstance获取该实例。ps:/** * 单例模式 */publicclassSingleton{     privatestaticSingletonsingleton=newSingleton();    priv 查看详情