Ansible 运维自动化 ( 配置管理工具 )

简介:

简介:

当下有许多的运维自动化工具( 配置管理 ),例如:Ansible、SaltStack、Puppet、Fabric 等。

Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。

Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。

Ansible 特点:

部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
默认使用 SSH(Secure Shell)协议对设备进行管理。
主从集中化管理。
配置简单、功能强大、扩展性强。
支持 API 及自定义模块,可通过 Python 轻松扩展。
通过 Playbooks 来定制强大的配置、状态管理。
对云计算平台、大数据都有很好的支持。
提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 ---- AWX 平台。

Ansible 与 SaltStack

最大的区别是 Ansible 无需在被监控主机部署任何客户端代理,默认通过 SSH 通道进行远程命令执行或下发配置。
相同点是都具备功能强大、灵活的系统管理、状态配置,都使用 YAML 格式来描述配置,两者都提供丰富的模板及 API,对云计算平台、大数据都有很好的支持。

一、安装 Ansible

shell > yum -y install ansible
二、配置 Ansible

shell > ls /etc/ansible # ansible.cfg 是 Ansible 工具的配置文件;hosts 用来配置被管理的机器;roles 是一个目录,playbook 将使用它
ansible.cfg hosts roles
1、Ansible 管理机与被管理机做秘钥认证

复制代码
shell > ssh-keygen # 生成秘钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ea:11:72:ea:d2:d1:fa:1c:e0:df:4f:b0:98:31:be:fe root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| |
| o.= S |
| ..*.B o |
| .ooB . . |
| ..o+ = . |

shell > ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 root@192.168.12.129" # 将公钥写入被管理机
The authenticity of host '192.168.12.129 (192.168.12.129)' can't be established.
RSA key fingerprint is f0:9e:01:73:a4:bf:14:10:ac:46:a9:48:cd:c5:d8:1c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.12.129' (RSA) to the list of known hosts.
root@192.168.12.129's password:
Now try logging into the machine, with "ssh '-p 22 root@192.168.12.129'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.
复制代码
2、hosts 文件添加被管理机

shell > > /etc/ansible/hosts
shell > vim /etc/ansible/hosts

[Client]

192.168.12.129
三、测试 Ansible

复制代码
shell > ansible Client -m ping # 操作 Client 组 ( all 为操作 hosts 文件中所有主机 ),-m 指定执行 ping 模块,下面是返回结果
192.168.12.129 | SUCCESS => {
"changed": false,
"ping": "pong"
}

-i 指定 hosts 文件位置

-u username 指定 SSH 连接的用户名

-k 指定远程用户密码

-f 指定并发数

-s 如需要 root 权限执行时使用 ( 连接用户不是 root 时 )

-K -s 时,-K 输入 root 密码

复制代码
四、附加

1、/etc/ansible/hosts 文件

Ansible 定义主机、组规则的配置文件

复制代码
shell > vim /etc/ansible/hosts

www.abc.com # 定义域名

192.168.1.100 # 定义 IP

192.168.1.150:37268 # 指定端口号

[WebServer] # 定义分组

192.168.1.10
192.168.1.20
192.168.1.30

[DBServer] # 定义多个分组

192.168.1.50
192.168.1.60

Monitor ansible_ssh_port=12378 ansible_ssh_host=192.168.1.200 # 定义别名

ansible_ssh_host 连接目标主机的地址

ansible_ssh_port 连接目标主机的端口,默认 22 时无需指定

ansible_ssh_user 连接目标主机默认用户

ansible_ssh_pass 连接目标主机默认用户密码

ansible_ssh_connection 目标主机连接类型,可以是 local 、ssh 或 paramiko

ansible_ssh_private_key_file 连接目标主机的 ssh 私钥

ansible_*_interpreter 指定采用非 Python 的其他脚本语言,如 Ruby 、Perl 或其他类似 ansible_python_interpreter 解释器

[webservers] # 主机名支持正则描述

www[01:50].example.com

[dbservers]

db-[a:f].example.com
复制代码
2、Ansible 常用模块学习

shell > ansible-doc -l # 列出 Ansible 支持的模块

shell > ansible-doc ping # 查看该模块帮助信息

远程命令模块( command / script / shell )

command 作为 Ansible 的默认模块,可以运行远程权限范围所有的 shell 命令,不支持管道符。

例:

shell > ansible Client -m command -a "free -m" # 查看 Client 分组主机内存使用情况
script 的功能是在远程主机执行主控端存储的 shell 脚本文件,相当于 scp + shell 组合。

例:

shell > ansible Client -m script -a "/home/test.sh 12 34" # 远程执行本地脚本
shell 的功能是执行远程主机上的 shell 脚本文件,支持管道符。

例:

shell > ansible Client -m shell -a "/home/test.sh" # 执行远程脚本

copy 模块(实现主控端向目标主机拷贝文件,类似于 scp 功能)

例:

shell > ansible Client -m copy -a "src=/home/test.sh desc=/tmp/ owner=root group=root mode=0755" # 向 Client 组中主机拷贝 test.sh 到 /tmp 下,属主、组为 root ,权限为 0755

stat 模块(获取远程文件状态信息,atime/ctime/mtime/md5/uid/gid 等信息)

例:

shell > ansible Client -m stat -a "path=/etc/syctl.conf"

get_url 模块(实现在远程主机下载指定 URL 到本地,支持 sha256sum 文件校验)

例:

shell > ansible Client -m get_utl -a "url=http://www.baidu.com dest=/tmp/index.html mode=0440 force=yes"

yum 模块(软件包管理)

例:

shell > ansible Client -m yum -a "name=curl state=latest"

cron 模块(远程主机 crontab 配置)

例:

shell > ansible Client -m cron -a "name='check dirs' hour='5,2' job='ls -alh > /dev/null'"
效果:

Ansible: check dirs

  • 5,2 * ls -alh > /dev/null

mount 模块(远程主机分区挂载)

例:

shell > ansible Client -m mount -a "name=/mnt/data src=/dev/sd0 fstype=ext4 opts=ro state=present"

service 模块(远程主机系统服务管理)

例:

shell > ansible Client -m service -a "name=nginx state=stoped"
shell > ansible Client -m service -a "name=nginx state=restarted"
shell > ansible Client -m service -a "name=nginx state=reloaded"

user 服务模块(远程主机用户管理)

例:

shell > ansible Client -m user -a "name=wang comment='user wang'"

shell > ansible Client -m user -a "name=wang state=absent remove=yes" # 添加删除用户
五、Ansible-playbook

使用 Ansible-playbook 可以完成一组复杂的动作,例如部署环境、搭建服务、修改配置等。

简单示例:

复制代码
shell > vim /etc/ansible/playbook.yml # 将远程主机IP地址写入文件中保存


  • hosts: Client
    remote_user: root

tasks:

  • name: Save IP To info.txt
    shell: "ifconfig eth0 | awk -F '[ :]'+ '/inet addr/{print $4}' > ~/info.txt"

hosts 指定执行操作主机

remote_user 指定执行用户

tasks 指明有哪些动作

name 动作描述

shell 模块,后面为具体指令

复制代码
Playbook 实战:

一、目录结构

复制代码
shell > cd /etc/ansible/ ; tree .
.
├── ansible.cfg
├── delete_zabbix_agent.yml
├── hosts
├── install_zabbix_agent.yml
└── roles

├── delete_zabbix_agent
│   ├── tasks
│   │   └── main.yml
│   └── vars
│       └── main.yml
└── install_zabbix_agent
    ├── files
    │   └── zabbix-2.4.5.tar.gz
    ├── tasks
    │   └── main.yml
    ├── templates
    │   ├── zabbix_agentd
    │   └── zabbix_agentd.conf
    └── vars
         └── main.yml

ansible.cfg 此文件为 ansible 的主配置文件

hosts 用于定义主机组

roles 定义不同的角色

install_zabbix_agent.yml 用于安装 zabbix_agent 的引导文件

delete_zabbix_agent.yml 删除已安装的 zabbix_agent 的引导文件

└── install_zabbix_agent
    ├── files
    │   └── zabbix-2.4.5.tar.gz
    ├── tasks
    │   └── main.yml
    ├── templates
    │   ├── zabbix_agentd
    │   └── zabbix_agentd.conf
    └── vars
         └── main.yml

其中,install_zabbix_agent 为一个角色,用于安装 zabbix_agent

file 目录:用于存放将要拷贝到远程主机的安装包等

tasks 目录:将要执行的所有任务,如果比较复杂,可以单独定义不同的任务,最后在 main.yml 文件中引用即可

templates 目录:模板目录,这里存放着一些可变的文件,即:每台主机上的这些文件中的内容都不完全相同

vars 目录:用于存放变量

这是一个比较简单的结构,其实一个角色中还可以有 meta 、handlers 等

复制代码
二、Playbook 安装软件需要的步骤

1、定义 hosts( 给哪些主机安装软件 )

shell > vim /etc/ansible/hosts

[mini]

129.139.153.78:16283
155.139.190.94:12573
2、定义入口文件 install_zabbix_agent.yml

复制代码
shell > vim /etc/ansible/install_zabbix_agent.yml


  • hosts: mini
    roles:

    • install_zabbix_agent

可以看到将要安装的主机组为 mini 组,角色为 install_zabbix_agent

复制代码
3、定义角色 install_zabbix_agent

复制代码
shell > tree /etc/ansible/roles/install_zabbix_agent/

├── files
│ └── zabbix-2.4.5.tar.gz
├── tasks
│ └── main.yml
├── templates
│ ├── zabbix_agentd
│ └── zabbix_agentd.conf
└── vars

  └── main.yml

建立 files 目录,存放编译安装过的 zabbix_agent 目录的压缩文件,用于拷贝到远程主机

建立 tasks 目录,用于编写将要执行的任务

建立 templates 目录,用于存放可变的模板文件

建立 vars 目录,用于存放变量信息

复制代码
复制代码
shell > cat /etc/ansible/roles/install_zabbix_agent/tasks/main.yml


  • name: Install Software

    yum: name={{ item }} state=latest
    with_items:
    • libcurl-devel
  • name: Create Zabbix User

    user: name={{ zabbix_user }} state=present createhome=no shell=/sbin/nologin
  • name: Copy Zabbix.tar.gz

    copy: src=zabbix-{{ zabbix_version }}.tar.gz dest={{ zabbix_dir }}/src/zabbix-{{ zabbix_version }}.tar.gz owner=root group=root
  • name: Uncompression Zabbix.tar.gz

    shell: tar zxf {{ zabbix_dir }}/src/zabbix-{{ zabbix_version }}.tar.gz -C {{ zabbix_dir }}/
  • name: Copy Zabbix Start Script

    template: src=zabbix_agentd dest=/etc/init.d/zabbix_agentd owner=root group=root mode=0755
  • name: Copy Zabbix Config File

    template: src=zabbix_agentd.conf dest={{ zabbix_dir }}/zabbix/etc/zabbix_agentd.conf owner={{ zabbix_user }} group={{ zabbix_user }} mode=0644
  • name: Modify Zabbix Dir Permisson

    file: path={{ zabbix_dir }}/zabbix owner={{ zabbix_user }} group={{ zabbix_user }} mode=0755 recurse=yes
  • name: Start Zabbix Service

    shell: /etc/init.d/zabbix_agentd start
  • name: Add Boot Start Zabbix Service

    shell: chkconfig --level 35 zabbix_agentd on

    复制代码

复制代码
shell > cat /etc/ansible/roles/install_zabbix_agent/vars/main.yml

zabbix_dir: /usr/local
zabbix_version: 2.4.5
zabbix_user: zabbix
zabbix_port: 10050
zabbix_server_ip: 131.142.101.120
复制代码
复制代码
shell > cat /etc/ansible/roles/install_zabbix_agent/templates/zabbix_agentd

!/bin/bash

chkconfig: - 90 10

description: Starts and stops Zabbix Agent using chkconfig

Tested on Fedora Core 2 - 5

Should work on all Fedora Core versions

@name: zabbix_agentd

@author: Alexander Hagenah hagenah@topconcepts.com

@created: 18.04.2006

Modified for Zabbix 2.0.0

May 2012, Zabbix SIA

Source function library.

. /etc/init.d/functions

Variables

Edit these to match your system settings

    # Zabbix-Directory
    BASEDIR={{ zabbix_dir }}/zabbix

    # Binary File
    BINARY_NAME=zabbix_agentd

    # Full Binary File Call
    FULLPATH=$BASEDIR/sbin/$BINARY_NAME

    # PID file
    PIDFILE=/tmp/$BINARY_NAME.pid

    # Establish args
    ERROR=0
    STOPPING=0

No need to edit the things below

application checking status

if [ -f $PIDFILE ] && [ -s $PIDFILE ]

    then
    PID=`cat $PIDFILE`

    if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null && [ $BINARY_NAME == `ps -e | grep $PID | awk '{print $4}'` ]
    then
            STATUS="$BINARY_NAME (pid `pidof $APP`) running.."
            RUNNING=1
    else
            rm -f $PIDFILE
            STATUS="$BINARY_NAME (pid file existed ($PID) and now removed) not running.."
            RUNNING=0
    fi

else

    if [ `ps -e | grep $BINARY_NAME | head -1 | awk '{ print $1 }'` ]
            then
            STATUS="$BINARY_NAME (pid `pidof $APP`, but no pid file) running.."
    else
            STATUS="$BINARY_NAME (no pid file) not running"
    fi
    RUNNING=0

fi

functions

start() {

    if [ $RUNNING -eq 1 ]
            then
            echo "$0 $ARG: $BINARY_NAME (pid $PID) already running"
    else
            action $"Starting $BINARY_NAME: " $FULLPATH
            touch /var/lock/subsys/$BINARY_NAME
    fi

}

stop() {

    echo -n $"Shutting down $BINARY_NAME: "
    killproc $BINARY_NAME
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$BINARY_NAME
    RUNNING=0

}

logic

case "$1" in

    start)
            start
            ;;
    stop)
            stop
            ;;
    status)
            status $BINARY_NAME
            ;;
    restart)
            stop
            sleep 10
            start
            ;;
    help|*)
            echo $"Usage: $0 {start|stop|status|restart|help}"
            cat <<EOF

                    start           - start $BINARY_NAME
                    stop            - stop $BINARY_NAME
                    status          - show current status of $BINARY_NAME
                    restart         - restart $BINARY_NAME if running by sending a SIGHUP or start if not running
                    help            - this screen

EOF

    exit 1
    ;;

esac

exit 0
复制代码
复制代码
shell > cat /etc/ansible/roles/install_zabbix_agent/templates/zabbix_agentd.conf

This is a config file for the Zabbix agent daemon (Unix)

To get more information about Zabbix, visit http://www.zabbix.com

GENERAL PARAMETERS

Option: PidFile

Name of PID file.

Mandatory: no

Default:

PidFile=/tmp/zabbix_agentd.pid

Option: LogFile

Name of log file.

If not set, syslog is used.

Mandatory: no

Default:

LogFile=

LogFile=/tmp/zabbix_agentd.log

Option: LogFileSize

Maximum size of log file in MB.

0 - disable automatic log rotation.

Mandatory: no

Range: 0-1024

Default:

LogFileSize=1

Option: DebugLevel

Specifies debug level

0 - basic information about starting and stopping of Zabbix processes

1 - critical information

2 - error information

3 - warnings

4 - for debugging (produces lots of information)

Mandatory: no

Range: 0-4

Default:

DebugLevel=3

Option: SourceIP

Source IP address for outgoing connections.

Mandatory: no

Default:

SourceIP=

Option: EnableRemoteCommands

Whether remote commands from Zabbix server are allowed.

0 - not allowed

1 - allowed

Mandatory: no

Default:

EnableRemoteCommands=0

Option: LogRemoteCommands

Enable logging of executed shell commands as warnings.

0 - disabled

1 - enabled

Mandatory: no

Default:

LogRemoteCommands=0

Passive checks related

Option: Server

List of comma delimited IP addresses (or hostnames) of Zabbix servers.

Incoming connections will be accepted only from the hosts listed here.

If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.

Mandatory: no

Default:

Server=

Server={{ zabbix_server_ip }}

Option: ListenPort

Agent will listen on this port for connections from the server.

Mandatory: no

Range: 1024-32767

Default:

ListenPort=10050

ListenPort={{ zabbix_port }}

Option: ListenIP

List of comma delimited IP addresses that the agent should listen on.

First IP address is sent to Zabbix server if connecting to it to retrieve list of active checks.

Mandatory: no

Default:

ListenIP=0.0.0.0

Option: StartAgents

Number of pre-forked instances of zabbix_agentd that process passive checks.

If set to 0, disables passive checks and the agent will not listen on any TCP port.

Mandatory: no

Range: 0-100

Default:

StartAgents=3

Active checks related

Option: ServerActive

List of comma delimited IP:port (or hostname:port) pairs of Zabbix servers for active checks.

If port is not specified, default port is used.

IPv6 addresses must be enclosed in square brackets if port for that host is specified.

If port is not specified, square brackets for IPv6 addresses are optional.

If this parameter is not specified, active checks are disabled.

Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]

Mandatory: no

Default:

ServerActive=

ServerActive=127.0.0.1:10051

Option: Hostname

Unique, case sensitive hostname.

Required for active checks and must match hostname as configured on the server.

Value is acquired from HostnameItem if undefined.

Mandatory: no

Default:

Hostname=

Hostname={{ ansible_all_ipv4_addresses[1] }}

Option: HostnameItem

Item used for generating Hostname if it is undefined. Ignored if Hostname is defined.

Does not support UserParameters or aliases.

Mandatory: no

Default:

HostnameItem=system.hostname

Option: HostMetadata

Optional parameter that defines host metadata.

Host metadata is used at host auto-registration process.

An agent will issue an error and not start if the value is over limit of 255 characters.

If not defined, value will be acquired from HostMetadataItem.

Mandatory: no

Range: 0-255 characters

Default:

HostMetadata=

Option: HostMetadataItem

Optional parameter that defines an item used for getting host metadata.

Host metadata is used at host auto-registration process.

During an auto-registration request an agent will log a warning message if

the value returned by specified item is over limit of 255 characters.

This option is only used when HostMetadata is not defined.

Mandatory: no

Default:

HostMetadataItem=

Option: RefreshActiveChecks

How often list of active checks is refreshed, in seconds.

Mandatory: no

Range: 60-3600

Default:

RefreshActiveChecks=120

Option: BufferSend

Do not keep data longer than N seconds in buffer.

Mandatory: no

Range: 1-3600

Default:

BufferSend=5

Option: BufferSize

Maximum number of values in a memory buffer. The agent will send

all collected data to Zabbix Server or Proxy if the buffer is full.

Mandatory: no

Range: 2-65535

Default:

BufferSize=100

Option: MaxLinesPerSecond

Maximum number of new lines the agent will send per second to Zabbix Server

or Proxy processing 'log' and 'logrt' active checks.

The provided value will be overridden by the parameter 'maxlines',

provided in 'log' or 'logrt' item keys.

Mandatory: no

Range: 1-1000

Default:

MaxLinesPerSecond=100

ADVANCED PARAMETERS

Option: Alias

Sets an alias for an item key. It can be used to substitute long and complex item key with a smaller and simpler one.

Multiple Alias parameters may be present. Multiple parameters with the same Alias key are not allowed.

Different Alias keys may reference the same item key.

For example, to retrieve the ID of user 'zabbix':

Alias=zabbix.userid:vfs.file.regexp[/etc/passwd,^zabbix:.:([0-9]+),,,,1]

Now shorthand key zabbix.userid may be used to retrieve data.

Aliases can be used in HostMetadataItem but not in HostnameItem parameters.

Mandatory: no

Range:

Default:

Option: Timeout

Spend no more than Timeout seconds on processing

Mandatory: no

Range: 1-30

Default:

Timeout=20

Option: AllowRoot

Allow the agent to run as 'root'. If disabled and the agent is started by 'root', the agent

will try to switch to the user specified by the User configuration option instead.

Has no effect if started under a regular user.

0 - do not allow

1 - allow

Mandatory: no

Default:

AllowRoot=0

Option: User

Drop privileges to a specific, existing user on the system.

Only has effect if run as 'root' and AllowRoot is disabled.

Mandatory: no

Default:

User=zabbix

Option: Include

You may include individual files or all files in a directory in the configuration file.

Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time.

Mandatory: no

Default:

Include=

Include=/usr/local/etc/zabbix_agentd.userparams.conf

Include=/usr/local/etc/zabbix_agentd.conf.d/

Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf

USER-DEFINED MONITORED PARAMETERS

Option: UnsafeUserParameters

Allow all characters to be passed in arguments to user-defined parameters.

0 - do not allow

1 - allow

Mandatory: no

Range: 0-1

Default:

UnsafeUserParameters=1

Option: UserParameter

User-defined parameter to monitor. There can be several user-defined parameters.

Format: UserParameter=,

See 'zabbix_agentd' directory for examples.

Mandatory: no

Default:

UserParameter=

LOADABLE MODULES

Option: LoadModulePath

Full path to location of agent modules.

Default depends on compilation options.

Mandatory: no

Default:

LoadModulePath=${libdir}/modules

Option: LoadModule

Module to load at agent startup. Modules are used to extend functionality of the agent.

Format: LoadModule=

The modules must be located in directory specified by LoadModulePath.

It is allowed to include multiple LoadModule parameters.

Mandatory: no

Default:

LoadModule=

复制代码
4、执行安装

复制代码
shell > ansible-playbook /etc/ansible/install_zabbix_agent.yml

PLAY [mini] *

GATHERING FACTS *
ok: [129.139.153.78]
ok: [155.139.190.94]

TASK: [install_zabbix_agent | Install Software] *
changed: [155.139.190.94] => (item=libcurl-devel)
changed: [129.139.153.78] => (item=libcurl-devel)

TASK: [install_zabbix_agent | Create Zabbix User] *
changed: [129.139.153.78]
changed: [155.139.190.94]

TASK: [install_zabbix_agent | Copy Zabbix.tar.gz] *
changed: [129.139.153.78]
changed: [155.139.190.94]

TASK: [install_zabbix_agent | Uncompression Zabbix.tar.gz]
changed: [129.139.153.78]
changed: [155.139.190.94]

TASK: [install_zabbix_agent | Copy Zabbix Start Script] *
changed: [155.139.190.94]
changed: [129.139.153.78]

TASK: [install_zabbix_agent | Copy Zabbix Config File] **
changed: [129.139.153.78]
changed: [155.139.190.94]

TASK: [install_zabbix_agent | Modify Zabbix Dir Permisson]
changed: [155.139.190.94]
changed: [129.139.153.78]

TASK: [install_zabbix_agent | Start Zabbix Service] *
changed: [129.139.153.78]
changed: [155.139.190.94]

TASK: [install_zabbix_agent | Add Boot Start Zabbix Service] **
changed: [129.139.153.78]
changed: [155.139.190.94]

PLAY RECAP
155.139.190.94 : ok=10 changed=9 unreachable=0 failed=0
129.139.153.78 : ok=10 changed=9 unreachable=0 failed=0

关注一下,启动脚本跟配置文件中变量的引用。

完成安装,可以去客户机检查效果了 !

复制代码
附上:delete_zabbix_agent.yml 相关内容

复制代码
shell > vim /etc/ansible/delete_zabbix_agent.yml


  • hosts: mini
    roles:

    • delete_zabbix_agent

shell > vim /etc/ansible/roles/delete_zabbix_agent/tasks/main.yml


  • name: Stop Zabbix_agent
    shell: pgrep zabbix_agentd | xargs kill

ignore_errors: yes

  • name: Delete Boot Start
    shell: chkconfig --del zabbix_agentd
  • name: Delete Start Script
    shell: rm -rf /etc/init.d/zabbix_agentd
  • name: Delete Install Dir
    shell: rm -rf {{ zabbix_dir }}/zabbix
  • name: Delete Software
    shell: rm -rf {{ zabbix_dir }}/src/zabbix-{{ zabbix_version }}.tar.gz
  • name: Delete Log File
    shell: rm -rf /tmp/zabbix_agentd.log
  • name: Delete Zabbix User
    user: name={{ zabbix_user }} state=absent remove=yes

shell > vim /etc/ansible/roles/delete_zabbix_agent/vars/main.yml

zabbix_dir: /usr/local
zabbix_version: 2.4.5
zabbix_user: zabbix
复制代码

相关文章
|
16天前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
11天前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
6天前
|
运维 监控 安全
自动化运维的利剑:Ansible在现代IT架构中的应用
在数字化浪潮中,企业对IT系统的敏捷性和可靠性要求日益提高。Ansible,一种简单但强大的自动化运维工具,正成为现代IT架构中不可或缺的一部分。它通过声明式编程语言YAM,简化了系统配置、应用部署和任务自动化的过程,显著提升了运维效率和准确性。本文将深入探讨Ansible的核心特性、应用场景以及如何有效整合进现有IT环境,为读者揭示其在自动化运维中的实用价值和未来发展潜力。
|
13天前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
14天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
38 4
|
13天前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible在配置管理中的应用
【10月更文挑战第37天】本文将深入探讨如何利用Ansible简化和自动化复杂的IT基础设施管理任务。我们将通过实际案例,展示如何用Ansible编写可重用的配置代码,以及这些代码如何帮助运维团队提高效率和减少人为错误。文章还将讨论如何构建Ansible playbook来自动部署应用、管理系统更新和执行常规维护任务。准备好深入了解这个强大的工具,让你的运维工作更加轻松吧!
29 2
|
14天前
|
运维 应用服务中间件 Linux
自动化运维:使用Ansible进行批量配置管理
【10月更文挑战第36天】在现代的IT基础设施中,高效和可靠的系统管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具来简化运维任务,包括安装、配置、部署应用程序以及管理系统更新。我们将探讨Ansible的核心概念,并通过实际代码示例展示其应用。通过阅读本文,读者将获得使用Ansible改善日常运维工作流程的实用知识。
|
16天前
|
运维 监控 数据安全/隐私保护
自动化运维工具的设计与实现
【10月更文挑战第34天】在现代IT基础设施管理中,自动化运维工具扮演着至关重要的角色。它们不仅提高了运维效率,还确保了服务的连续性和稳定性。本文将深入探讨如何设计并实现一个自动化运维工具,从需求分析到功能实现,再到最终的测试与部署。我们将通过一个简单的代码示例来展示如何自动执行常见的运维任务,如日志清理和性能监控。文章旨在为读者提供一套完整的方法论,以便他们能够构建自己的自动化运维解决方案。
|
1月前
|
运维 负载均衡 应用服务中间件
自动化运维:使用Ansible进行服务器配置管理
【9月更文挑战第34天】在现代IT运维工作中,自动化已成为提升效率、减少错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化和加速服务器的配置管理工作。我们将通过实际案例展示如何利用Ansible的Playbooks来自动化常见任务,并讨论其对提高运维团队工作效率的影响。
|
1月前
|
运维 应用服务中间件 网络安全
自动化运维:使用Ansible进行批量服务器配置
【9月更文挑战第35天】在现代IT基础设施管理中,高效、可扩展的自动化工具是提升工作效率的关键。本文将引导您了解如何使用Ansible这一强大的自动化工具来简化和加速服务器的配置过程,确保一致性和可靠性的同时减少人为错误。通过实际案例,我们将展示如何编写Ansible Playbook以实现批量服务器配置,从而让您能够更加轻松地管理和维护您的服务器群。
下一篇
无影云桌面