自动化运维工具ansible基础应用

ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置,批量程序部署,批量运行命令等功能。

ansible是基于模块工作的,本事没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

1、连接插件connection plugins:负责和被监控端进行通信

2、host inventory:指定操作的主机,是一个配置文件里卖弄定义监控的主机

3、各种核心模块、command模块、自定义模块

4、借助于插件完成记录日志邮件等功能

5、playbook:可让slave节点一次执行多个任务

ansible的特性:

1、模块化:调用特定的模块,完成特定任务

2、基于python语言实现,有Paramiko,PyYAML和jinja2三个关键模块

3、部署简单

4、支持自定义模块

5、支持playbook

准备环境

           主机名              IP
          localhost(ansiblemaster)           10.10.86.56
           node1(ansibleslave)           10.10.73.148
           bogon(ansibleslave)           10.10.73.149

一、ansible的安装

[[email protected] ~]# yum install ansible
##配置文件:/etc/ansible/ansible.cfg
##主机清单:/etc/ansible/hosts
##主程序:ansible、ansible-doc、ansible-playbook

二、ansible免秘钥ssh登陆

[email protected] ~]# ssh-keygen -t rsa -P ‘‘
[[email protected] ~]# ssh-copy-id -i [email protected]
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.

[[email protected] ~]# ssh-copy-id -i [email protected]
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.
##将生产的秘钥推送给slave节点,第一次交互需要(yes/no)

三、主机组自定义

[[email protected] ~]# vim /etc/ansible/hosts
[ansible_agent]

10.10.73.148  ##port  

10.10.73.149  ##port
##如果slave的ssh端口不是默认的22,则可在主机后面相应的端口

四、简单测试

获取ansible的常用模块列表

[[email protected] ~]# ansible-doc -l

获取某个模块的用法

[[email protected] ~]# ansible-doc -s COMMAND
##COMMAND:yum、cron、shell、setup、copy......

1、ping

[[email protected] ~]# ansible ansible_agent -m ping    ##用来测试远程主机的运行状态
10.10.73.149 | SUCCESS => { 
    "changed": false, 
    "ping": "pong"
}
10.10.73.148 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

2、setup模块

[[email protected] ~]# ansible ansible_agent -m "setup"   ##获取远程主机的详情信息

3、command模块

[[email protected] ~]# ansible ansible_agent -m shell -a "ls /tmp"
10.10.73.149 | SUCCESS | rc=0 >>
ansible_Z1xG26
wtc

10.10.73.148 | SUCCESS | rc=0 >>
ansible_6SQ3_D
report.sh
wtc.txt

4、shell模块

[[email protected] ~]# ansible ansible_agent -m shell -a "echo wxpp | passwd --stdin wtc"
10.10.73.148 | SUCCESS | rc=0 >>
Changing password for user wtc.
passwd: all authentication tokens updated successfully.

10.10.73.149 | SUCCESS | rc=0 >>
更改用户 wtc 的密码 。
passwd: 所有的身份验证令牌已经成功更新。

###ansible是要支持管道命令,必须要使用shell模块;同时想要支持shell特性,必须要使用shell模块

5、copy模块

(1)src=\‘#\‘" /p>

(2)content=  dest=

(3)owner:指明属主

(4)group:指明数组

(5)mode:指明权限

[[email protected] tmp]# ansible ansible_agent -m copy -a "src=/tmp/wxpp.txt  dest=/tmp mode=665"  ##复制本地的"wxpp.txt"文件至远程主机上
10.10.73.148 | SUCCESS => {
    "changed": true, 
    "checksum": "7641dc777dc18a1c2dfa3429aa8009c12c566913", 
    "dest": "/tmp/wxpp.txt", 
    "gid": 0, 
    "group": "root", 
    "mode": "0665", 
    "owner": "root", 
    "path": "/tmp/wxpp.txt", 
    "size": 36, 
    "state": "file", 
    "uid": 0
}
10.10.73.149 | SUCCESS => {
    "changed": true, 
    "checksum": "7641dc777dc18a1c2dfa3429aa8009c12c566913", 
    "dest": "/tmp/wxpp.txt", 
    "gid": 0, 
    "group": "root", 
    "mode": "0665", 
    "owner": "root", 
    "path": "/tmp/wxpp.txt", 
    "size": 36, 
    "state": "file", 
    "uid": 0
}
[[email protected] tmp]# ansible ansible_agent -m shell -a "cat /tmp/wxpp.txt"   ##追加指定的文本至远程主机中
10.10.73.149 | SUCCESS | rc=0 >>
wtc sent a bouquet of roses to wxpp

10.10.73.148 | SUCCESS | rc=0 >>
wtc sent a bouquet of roses to wxpp
[[email protected] tmp]# ansible ansible_agent -m copy -a "content=‘\nHello World‘ dest=/tmp/wxpp.txt"
10.10.73.149 | SUCCESS => {
    "changed": true, }
10.10.73.148 | SUCCESS => {
    "changed": true, }
 [[email protected] tmp]# ansible ansible_agent -m shell -a "cat /tmp/wxpp.txt"
10.10.73.149 | SUCCESS | rc=0 >>

Hello World

10.10.73.148 | SUCCESS | rc=0 >>

Hello World
##content是覆盖文件源内容,使用时注意

6、cron模块

(1)month=

(2)day=

(3)hour=

(4)weekday=

(5)minute=

(6)job=   ##指明运行的命令是什么

(7)name=  ##指明定时任务描述

(8)state  ##指定状态,prsent表示添加定时任务,也是默认值。absent表示删除定时任务

(9)user   ##指明以那个用户的身份执行

[[email protected] ~]# ansible ansible_agent -m shell -a "ls /var/spool/cron/"
10.10.73.149 | SUCCESS | rc=0 >>
root

10.10.73.148 | SUCCESS | rc=0 >>
root
[[email protected] ~]# ansible ansible_agent -m cron -a "minute=‘*/1‘ job=‘/usr/sbin/ntpdate 10.10.86.56 &> /dev/null‘ user=wtc name=‘Wtc Job‘"
10.10.73.149 | SUCCESS => {
    "changed": true, 
    "envs": [], 
    "jobs": [
        "Wtc Job"
    ]
}
10.10.73.148 | SUCCESS => {
    "changed": true, 
    "envs": [], 
    "jobs": [
        "Wtc Job"
    ]
}
[[email protected] ~]# ansible ansible_agent -m shell -a "cat /var/spool/cron/wtc"
10.10.73.149 | SUCCESS | rc=0 >>
#Ansible: Wtc Job
*/1 * * * * /usr/sbin/ntpdate 10.10.86.56 &> /dev/null

10.10.73.148 | SUCCESS | rc=0 >>
#Ansible: Wtc Job
*/1 * * * * /usr/sbin/ntpdate 10.10.86.56 &> /dev/null

7、file模块:

(1)创建链接文件:src=、path=、state=

(2)修改文件属性:path=、owner=、mode=、group=

(3)创建目录:path=、state=

(4)state

directory:如果目录不存在,则会创建

link:创建软链接

hard:创建硬链接

touch:如果文件不存在,则会创建。如果文件存在,则修改mtime

absent:删除目录、文件、取消链接

[[email protected] ~]# ansible ansible_agent -m file -a "src=/etc/fstab path=/tmp/fstab.link state=link"
10.10.73.148 | SUCCESS => {
    "changed": true, 
    "dest": "/tmp/fstab.link", 
    "gid": 0, 
    "group": "root", 
    "mode": "0777", 
    "owner": "root", 
    "size": 10, 
    "src": "/etc/fstab", 
    "state": "link", 
    "uid": 0
}
10.10.73.149 | SUCCESS => {
    "changed": true, 
    "dest": "/tmp/fstab.link", 
    "gid": 0, 
    "group": "root", 
    "mode": "0777", 
    "owner": "root", 
    "size": 10, 
    "src": "/etc/fstab", 
    "state": "link", 
    "uid": 0
}
[[email protected] ~]# ansible ansible_agent -m shell -a "ls /tmp"
10.10.73.149 | SUCCESS | rc=0 >>
ansible_TdmFaK
fstab.link
wtc
wxpp.txt

10.10.73.148 | SUCCESS | rc=0 >>
ansible_1oUVuk
fstab.link
report.sh
wtc.txt
wxpp.txt
[[email protected] ~]# ansible ansible_agent -m file -a "path=/tmp/fstab.link state=absent"
10.10.73.149 | SUCCESS => {
    "changed": true, 
    "path": "/tmp/fstab.link", 
    "state": "absent"
}
10.10.73.148 | SUCCESS => {
    "changed": true, 
    "path": "/tmp/fstab.link", 
    "state": "absent"
}
[[email protected] ~]# ansible ansible_agent -m shell -a "ls /tmp"
10.10.73.148 | SUCCESS | rc=0 >>
ansible_jTgQOI
report.sh
wtc.txt
wxpp.txt

10.10.73.149 | SUCCESS | rc=0 >>
ansible_CuFRGA
wtc
wxpp.txt

8、更多模块(ansible-doc -l)

fetch模块:拉取远程主机的文件到本地(拉取的只能是文件,但是拉取到本地之后是目录,以"hosts"文件中名字命名

hostname模块:管理主机名

yum模块:给远程主机安装应用、卸载程序

service模块:管理远程主机上的服务

user模块:管理用户的账号、密码

group模块:管理系统用户组

总结:

1、ansible是基于ssh无密钥登陆的,只限于当前用户。如果是"wtc"用户创建ansible秘钥并推送至远程主机,则使用"root"用户推送命令则需使用密码

2、对于"shell"模块,个人认为它可以实现多数模块的功能,只要能用命令表达式表达出来即可,例如:

ansible ansible_agent -m shell -a "yum install httpd"  
ansible ansible_agent -m shell -a "service httpd start"
ansible ansible_agent -m shell -a "echo ‘wtc sent a bouquet of roses to wxpp‘ &>> /tmp/wxpp.txt"
ansible ansible_agent -m shell -a "ln -sv /etc/fstab /tmp/fstab.link"
时间: 2024-10-20 12:54:40

自动化运维工具ansible基础应用的相关文章

自动化运维工具-Ansible基础

目录 自动化运维工具-Ansible基础 自动化运维的含义 Ansible 基础及安装 Ansible的架构 Ansible的执行流程 ansible配置文件 ansible Inventory(主机清单文件) Ansible ad-hoc ansible常用模块 实战 自动化运维工具-Ansible基础 自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 Ansible 基础及安装 1.什么是Ansible Ansible是一个自动化统一配置管理工具 2

自动化运维工具Ansible详细部署 (转载)

自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 ===========================

自动化运维工具——ansible详解案例分享

自动化运维工具--ansible详解案例分享(一)目录ansible 简介ansible 是什么?ansible 特点ansible 架构图ansible 任务执行ansible 任务执行模式ansible 执行流程ansible 命令执行过程ansible 配置详解ansible 安装方式使用 pip(python的包管理模块)安装使用 yum 安装ansible 程序结构ansible配置文件查找顺序ansible配置文件ansuble主机清单ansible 常用命令ansible 命令集a

3.1 自动化运维工具ansible

自动化运维工具ansible 运维自动化发展历程及技术应用 Iaas 基础设施即服务Pass 平台服务SaaS 软件即服务 云计算工程师核心职能 Linux运维工程师职能划分 自动化动维应用场景 文件传输命令执行 应用部署配置管理任务流编排 企业实际应用场景分析 1 Dev开发环境 使用者:程序员功能:程序员开发软件,测试BUG的环境管理者:程序员123 2 测试环境 使用者:QA测试工程师功能:测试经过Dev环境测试通过的软件的功能管理者:运维说明:测试环境往往有多套,测试环境满足测试功能即可

自动化运维工具Ansible详细部署

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 =========================================================

自动化运维工具Ansible实战(一)安装部署

1,基本介绍 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:指定操作

自动化运维工具Ansible架构部署应用及playbooks简单应用

在日常服务器运维中,我们经常要配置相同的服务器配置,前期我们都是一台一台的去配置,这种方法操作主要应对于服务器数量不多且配置简单的情况还可以继续这样操作,如果我们后期维护几百服务器或者几万服务器呢? 我应该怎样去快速配置服务器呢?如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作同时也增加服务器配置的异常,至此自动化运维工具解决我们的瓶颈---Ansible工具. Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng

自动化运维工具Ansible部署详解与基本使用

一.基础简介 1.Ansible简介 Ansible是一款基于Python开发的自动化运维工具,主要是实现批量系统配置.批量程序部署.批量运行命令.批量执行任务等等诸多功能.Ansible是一款灵活的开源工具,能够很大程度简化运维中的配置管理与流程控制方式,它利用推送方式对客户系统加以配置,这样所有工作都可在主服务器端完成.Asible是基于模块工作的,其本身没有批量部署的能力,总之只要明白Ansible是一款运维自动化的神器就好了~! 2.功能特性 ######################

自动化运维工具ansible详解

 ll  本文导航    · ansible的基础介绍   · ansible的安装与配置   · ansible的简单应用   · YAML介绍及语法   · ansible-playbooks(剧本)  ll  要求  掌握ansible基本应用与playbooks. 1.ansible介绍 ansible是一款基于python开发的自动化运维工具,它结合了puppet.cfengine.func.chef.fabric等工具的优点,实现了批量系统配置.批量部署应用程序及批量部署命令   a