ansible-playbook agent实例

  1. 云栖社区>
  2. 博客>
  3. 正文

ansible-playbook agent实例

科技小能手 2017-11-12 21:32:00 浏览1048
展开阅读全文

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


以下比较简单:

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


主要是推发布系统的agent:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$ 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的树形结构如下:

1
2
3
4
5
6
7
8
9
10
11
$ tree agent
agent
├── files
│   └── agent.tgz
├── handlers
├── stop.sh
├── tasks
│   └── main.yaml
├── templates
└── vars
    └── main.yaml

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- 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 主要是定义几个变量。

1
2
3
4
5
cat main.yaml 
agent_home: /data
user: ody
version: v3.0
bag: agent

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

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


本文转自青衫解衣 51CTO博客,原文链接:http://blog.51cto.com/215687833/1886323

网友评论

登录后评论
0/500
评论
科技小能手
+ 关注