常用自动化运维工具

Ansible:python,Agentless,中小型应用环境

saltstack:python,一般需部署agent,执行效率更高

puppet:ruby,功能强大,配置复杂,重型适合大型环境

fabric:python,agentless  Chef:ruby,国内应用少   Cfengine  func

Ansible 主要组成部分

Ansible命令执行来源:1USER 2USER->Ansible Playbook->Ansible 3CMDB 4PUBLIC/PRIVATE CLOUD

Ansible-playbook(剧本)执行过程:

将已有编排好的任务集写入Ansible-Playbook

通过ansible-playbook命令分拆任务集至逐条ansible命令,按预定规则逐条执行

ansible主要操作对象:1、hosts主机 2、NETWORKING网络设备

相关文件

配置文件

/etc/ansible/ansible.cfg  主配置文件。配置ansible工作特性

/etc/ansible/hosts  主机清单

/etc/ansible/roles  存放角色的目录

程序

/usr/bin/ansible  主程序,临时命令执行工具

/usr/bin/ansible-doc  查看配置文档,模块功能查看工具

/usr/bin/ansible-galaxy  下载/上传优秀代码或roles模块的官网平台

/usr/bing/ansible-playbook 定制自动化任务,编排工具

/usr/bin/ansible-pull  远程执行命令的工具

/usr/bin/ansible-vault  文件加密工具

/usr/bin/ansible-console  基于console界面与用户交互的执行工具

主机清单invenstory

/etc/ansible/hosts文件格式

inventory文件遵循INI文件风格,中括号中的字符为组名,可以将同一个主机同时归并到多个不同的组中;此外如若目标主机使用非默认ssh端口,还可以在主机名之后使用冒号加端口号来标明

ntp.magedu.com

[webservers]

www1.magedu.com:2222

www2.magedu.com

[dbservers]

db1.magedu.com

db2.magedu.com

db3.magedu.com

ansible配置文件

Ansible配置文件/etc/ansible/ansible.cfg(一般保持默认)

[defaults]

#inventory  =  /etc/ansible/hosts  #主机列表配置文件

#library  =  /usr/share/my_modules/  #库文件存放目录

#remote_tmp  =  $HOME/.ansible/tmp  #临时py命令文件存放在远程主机目录

#local_tmp  =  $HOME/.ansible/tmp  #本机的临时命令执行目录

#forks    =  5  #默认并发数

#sudo_user   =  root #默认sudo 用户

#ask_sudo_pass  = True  #每次执行ansible命令是否询问ssh密码

#ask_pass  =  True

#remote_port   =  22

#host_key_checking =False  # 检查对应服务器的host_key,建议取消注释

#log_path=/var/log/ansible.log  #日志文件

ansible系列命令

Ansible系列命令:

ansible  ansible-doc  ansible-playbook  ansible-vault  snsible-console  ansible-galaxy  ansible-pull

ansible-doc:显示模块帮助

ansible-doc[options][module...]  -a  所有模块文档  -l,--list  可用模块  -s  显示指定模块playbook片段

ansible通过ssh实现配置管理、应用部署、任务执行等功能,建议配置ansible端能基于密钥认证的方式联系各个被管理站点

ansible <host-pattern> [-m module_name] [-a args]

--version 显示版本

-m module 指定模块,默认为command

-v 详细过程 -vv -vvv更详细

--list-hosts  显示主机列表,可见写--list

-k, --ask-pass  提示输入ssh连接密码,默认Key验证

-K, --ask-become-pass 提示输入sudo时的口令

-C, --check  检查,并不执行

-T, --timeout=TIMEOUT 执行命令的超市时间,默认10s

-u, --user=REMOUTE_USER 执行远程执行的用户

-b, --become  代替旧版的sudo 切换

ansible 192.168.0.31 -u zhimai -k -a 'ls /var/'

 ssh-keygen创建公钥-私钥对

-t: 密钥类型, 可以选择 dsa | ecdsa | ed25519 | rsa;

-f: 密钥目录位置, 默认为当前用户home路径下的.ssh隐藏目录, 也就是~/.ssh/, 同时默认密钥文件名以id_rsa开头. 如果是root用户, 则在/root/.ssh/id_rsa, 若为其他用户, 则在/home/username/.ssh/id_rsa;

-C: 指定此密钥的备注信息, 需要配置多个免密登录时, 建议携带;

-N: 指定此密钥对的密码, 如果指定此参数, 则命令执行过程中就不会出现交互确认密码的信息了.

ssh-copy-id把A的公钥发送给B

ssh-copy-id root@172.16.22.132

# 指定要拷贝的本地文件、远程主机的IP+用户名+端口号:

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@172.16.22.132

ansible的Host-pattern 匹配主机的列表

All:表示所有Inventory中的所有主机   ansible all -m ping

*    通配符

ansible  “*”  -m  ping

ansible  192.168.1.* -m ping

ansible  "srvs"  -m  ping

逻辑或

ansible  "webserver:appserver"  -m  ping

ansible  “192.168.1.10:192.168.1.20”    -m  ping

逻辑与

ansible    “websrvs:&dbsrvs”    -m   ping

在websrvs 组并且在dbsrs组中的主机

逻辑非

ansible  ‘websrvs:!dbsrvs’   -m   ping

在websrvs组,但不再dbsrvs组中的主机

注意:此处为单引号

综合逻辑

ansible    ‘websrvs:dbsrvs:&appsrvs’    -m  ping

正则表达式

ansible    “~(web|db).*\.magedu\.com  ”    -m   ping

ansible命令执行过程

1、加载自己的配置文件  默认/etc/ansible/ansible.cfg

2、加载自己对应的模块文件,如command

3、通过ansible 将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件

4、给文件+x执行

5、执行并返回结果

6、删除临时py文件,sleep 0 退出

执行状态:

绿色:执行成功并且不需要做改变的操作

黄色:执行成功并且需要对目标主机做变更

红色:执行失败

ansible使用示例

示例 以wang用户执行ping存活检测

ansible  all  -m  ping  -u  wang  -k

以wang sudo 至root 执行ping存活检测

ansible all -m ping -u wang -b -k

以wang sudo至mage用户执行ping存活检测

ansible all -m ping -u wang -b -k --become-user mage

以wang sudo 至root 用户执行ls

ansible all -m command -u wang --become-user=root -a ‘ls /root’ -b  -k  -K

Ansible常用模块

Command:在远程主机执行命令,默认模块,可忽略-m选项

ansible srvs -m command -a ‘service vsftpd start’

ansible srvs -m command -a ‘echo magedu|passwd --stdin wang’不成功

此命令不支持4VARNAME<>|;&等,用shell模块实现

Shell:和command相似,用shell执行命令

ansible srv -m shell -a ‘echo magedu|passwd --stdin wang’

调用bash执行命令 类似 cat/tmp/stanley。md | awk -F‘|' {pring $1 ,$2}'>/tmp/exanple.txt 这些复杂命令,即使使用shell也可能会失败,解决办法:写道脚本时,copy到元辰,执行,再把需要的结果拉回执行命令的机器

Script:运行脚本

-a “/PATH/TO/SCROPT_FILE”

ansible websvrs -m script -a f1.sh

Copy:从服务器复制文件到客户端,

ansible scr -m copy -a "scr=/root/f1.sh dest=/tmp/f2.sh backup=yes"

如果目标存在,默认覆盖,此处指定先备份

ansible scr -m copy -a "content=‘test content\n' dest=/tmp/f1.txt“ 

利用内容直接生成目标文件

Fetch:从客户端取文件至服务器端,copy相反,目录可先tar

ansible srv -m fetch -a ’src=/root/a.sh dest=/data/scripts‘

File:设置文件属性

ansible srv -m file -a ”path=/root/a.sh ower=wang mode=755“
ansible web -m file -a ’src=/app/testfile dest=/app/testfile-link state=link‘

Hostname:管理主机名

ansible node1-m hostname -a “name=websrv ”

Cron:计划任务

支持时间:minute,hour,day,month,weekday

ansible all -m cron -a 'minute=* weekday=1,3,5 job="/usr/bin/wall FBIwarning" name=warningcron' 

ansible all -m cron -a 'disable-true job="/usr/bin/wall FBIwarning" name=warningcron' #禁用

ansible all -m cron -a 'job="/usr/bin/wall FBIwarning" name=warningcron state=absent'        #删除

Yum:管理包

ansible 192.168.0.31 -m yum -a 'name=vsftpd,memcached state=absent disable_gpg_check=yes'        #卸载

ansible 192.168.0.31 -m yum -a 'name=vsftpd,memcached'        #安装

Service:管理服务

ansible 192.168.0.31 -m service -a 'name=nginx state=stopped enabled=yes'

User:管理用户

ansible srv -m user -a ‘name=user1 comment=“test user” uid=2048 home=/app/user1 group=root’

ansible srv -m user -a ‘name=use system=yes home=/app/sysuser’

ansible srv -m user -a ‘name=use state=absent remove=yes‘

Group:管理组

ansible srv -m group -a ‘name=testgroup system=yes ’
ansible srv -m group -a ‘name=testgroup state=absent ’

Ansible之一module的更多相关文章

  1. Ansible develop module

    def cnf(action,configs,path): message = "Modify %s\n" %path changed = False if action == & ...

  2. Ansible Notes: module: get_facts

    功能:用来获取remote host的facts 它是一个非常基础的模块[1],playbook里面可以直接当关键字用gather_facts: False 执行set_up模块时自动调用get_fa ...

  3. ansible服务模块和组模块使用

    本篇文章主要是介绍ansible服务模块和组模块的使用. 主要模块为ansible service module和ansible group moudle,下面的内容均是通过实践得到,可以直接运行相关 ...

  4. ansible基础-安装与配置

    一 安装 1.1 ansible架构 ansible是一个非常简单的自动化部署项目,由python编写并且开源.用于提供自动化云配置.配置文件管理.应用部署.服务编排和很多其他的IT自动化需求. an ...

  5. Gitlab_ansible_jenkins三剑客③Ansible的安装及使用

    一台服务器可能会安装不同的python应用,不同的应用可能使用的模块版本不同,如果都安装在同样的环境下容易冲突,为了避免冲突,引入virtualenv 这个包管理工具进行环境的隔离 使用pip安装之前 ...

  6. Ansible安装部署以及常用模块详解

    一.  Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于py ...

  7. 【原创】运维基础之Ansible(1)简介、安装和使用

    官方:https://www.ansible.com/ 一 简介 Ansible is a radically simple IT automation engine that automates c ...

  8. 轻量级集群管理软件-Ansible

    ansible概述和运行机制 ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具,  它用Python写成,类似于saltstack和Puppet,但是有一个不同 ...

  9. Ansible 安装与配置(一)

    公司大概有200多云主机需要进行管理,但是如果通过手工管理费时还累最终结果也容易出错,所以考虑通过自动化的方式来管理云主机,目前开源的自动化工具,大家用的比较多的有Ansible和Saltstack这 ...

  10. ansible简介,简单实用

    Ansible ansilbe是实现自动化运维的工具,基于python开发,实现批量系统配置,批量程序部署,批量运行命令等功能. ansible是基于模块工作的,自身是没有批量部署的能力.真正具有批量 ...

随机推荐

  1. CudaSPONGE高性能GPU分子模拟

    技术背景 CudaSPONGE是基于CUDA C开发的一款纯GPU分子动力学模拟软件,具有模块化和高性能的特点.官方基本介绍内容如下: 分子动力学(Molecular Dynamics, MD)模拟是 ...

  2. SQL Server数据表模糊查询(like用法)详解

    在SQL Server Management Studio (SSMS) 中,进行模糊查询主要是通过使用like操作符来实现的.like操作符用于在where语句中搜索列中具有指定模式的数据.我们在简 ...

  3. Refact.ai Match 1 (Codeforces Round 985, Div. 1 + Div. 2)

    Contest Link A Easy math problem. Submission B 大胆贪心猜结论,容易想到一个套路化的 stack 做法. Submission C 容易想到是个二分题,二 ...

  4. 不会前端也能写官网?没问题,Devbox+Cursor 带你起飞

    大家平时都是怎么给自己的产品开发官方网站的? 是不是先在本地配置好环境,然后使用 IDE 写代码,写完代码后部署到服务器生成预览链接,团队协作成员再打开浏览器访问,然后你再修改,再部署,再访问,再修改 ...

  5. Linux C/C++编程中的多线程编程基本概念

    8.2.1  操作系统和多线程 要在应用程序中实现多线程,必须有操作系统的支持.Linux 32位或64位操作系统对应用程序提供了多线程的支持,所以Windows NT/2000/XP/7/8/10是 ...

  6. cockpit-325以及新版本安装和cockpit-files安装

    查看版本cockpit可安装版本,发现最新的只有310版本 sudo yum list cockpit --showduplicates Last metadata expiration check: ...

  7. 4 步缩减 Script Evaluation Time

    4 步缩减脚本评估时间 (Script Evaluation Time) https://touch.marfeel.com/resources/blog/reduce-script-evaluati ...

  8. zz 为什么我更喜欢 Python 的 Storm ORM

    为什么我更喜欢 Python 的 Storm ORM - @emacsway 的博客 很有意思的讨论.可能还是 mapping 比较实用. 另外,文中称赞有加的 Identity Map 并不适合并发 ...

  9. 用Python让两组数据纵向排序

    一.引言 在数据处理和分析中,排序是一项非常基础且重要的操作.排序可以帮助我们更好地理解数据,发现数据中的模式和规律.在Python中,我们可以使用多种方法对数据进行排序.本文将详细介绍如何使用Pyt ...

  10. Shiro安全框架【认证】+【授权】

    1.Shiro的核心架构 Subject:程序主体 Security Manager:安全管理器 Authentication:做认证 Authorizer:做授权 Session Manager:会 ...