ansible

Ansible自动化运维

ansible基于pythob开发

常用的自动运维化工具

Ansible;python;Agentless。中小型应用环境

Saltstack;python 一般需要部署agent,执行效率高。

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

C/S

一个系统去控制多台主机

特性

  • 模块化:调用特定的模块,完成特定的任务
  • 有Paramlko,PyYAML。Jinja2(模块语言)三个关键模块
  • 支持自定义模块
  • 基于Python语言实现
  • 部署简单,基于Python和SSH(默认已经安装),agentless
  • 安全,基于OpenSSH
  • 支持playbook编程任务
  • 幂等性:一个任务执行一次和执行多次效果一样,不因重复执行带来意外情况
  • 无需代理不依赖pkI(无需ssl)
  • 可使用任意编程语言写模块
  • YAML格式,编排任务,支持丰富的数据结构
  • 较强大的多层解决方案

Ansible主要组成部分

  • Ansible playbook:任务剧本,编排定义Ansible任务集的配置文件,由Ansible顺序执行,通常是json格式和yml文件
  • INVENTORY:Ansible管理主机的清单 /etc/ansible/hosts

相关文件

配置文件

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

/etc/ansible/host 主机清单

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

程序

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

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

/usr/bin/ansible-galaxy 下载/上传优秀代码

/usr/bin/ansible-playbook定制自动化任务,编排剧本工具/usr/bin/ansible-pull远程执行命令

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

ansible 主机 -m ping -k

第一次连接需要加入ssh

cd .ssh

ssh 主机ip

命令

ansible-doc帮助命令

-a显示所有模块文档

-l,–list 列出可用模块

-s,–snippet显示出指定的playbook片段

实例

ansible-doc -l 列出所有模块

ansible-doc ping 查看指定帮助文档

ansible-doc -s ping 查看指定帮助文档用法

ansible [-m module_name][-a args]

-- version 显示版本

​ -m 指定模块

​ -v 详细过程

​ -k 提示输入ssh连接密码,默认key验证

​ -K 提示输入sudo时口令

​ -C 检查,并不执行

ansible 主机 --list-host:显示主机列表,简写-list

​ -u 指定用户连接

ansibl的Host-pattern

all:匹配所有主机列表里的主机

*:通配符

ansible “*” -m ping

ansible 192.168.1.* -m ping

:是或的关系

:&并且 需要加引号

逻辑非:我:!你 执行我,而不执行你

正则表达

在多台主机运行一个脚本

ansible all -m script -a ‘/root/ansible/host.sh’

把一个文件复制到远程主机

ansible all -m copy -a ‘ content=“hello\生成文件” src=/root/源 dest=指定地点 mode=000权限 owner=所有者’

copy:从服务器复制到客户端

fetch:从客户端提取文件到服务端,copy相反,目录可先tar

ansible all -m fetch -a‘src=被控制段文件 dest=本机目录’

file:设置文件属性

创建文件ansible all -m file -a‘name=/data/fa3 state=touch’

查看 ansible all -a ‘ls -l /data ‘

删除 ansible -all -m file -a ‘name=/data state=absent ’

创建文件夹 ansible all -m file -a ’name=/date/dir state=directory ‘

创建软链接 ansible all -m file -a ’src=/etc/fstab dest=/data/fstab.link state=link‘

删除软连接 ansible all -m file -a ’dest=/data/fstab.link state=absent‘

command:查看文件 ansible all -m command -a ’cat/data/f2‘

shell模块

一、概述

shell 模块可以帮助我们在远程主机上执行命令。与 command 模块不同的是,shell 模块在远程主机中执行命令时,会经过远程主机上的 /bin/sh 程序处理。

二、常用参数

**free_form参数 :**必须参数,指定需要远程执行的命令,但是并没有具体的一个参数名叫free_form,具体解释参考 command 模块。

chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到 chdir 参数指定的目录中。

**creates参数 :**使用此参数指定一个文件,当指定的文件存在时,就不执行对应命令,可参考command 模块中的解释。

**removes参数 :**使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令,可参考 command 模块中的解释。

**executable参数:**默认情况下,shell 模块会调用远程主机中的 /bin/sh 去执行对应的命令,通常情况下,远程主机中的默认 shell 都是 bash。如果你想要使用其他类型的 shell 执行命令,则可以使用此参数指定某种类型的 shell 去执行对应的命令。指定 shell 文件时,需要使用绝对路径。

cron计划任务

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

name=Synctime 删除任务

Playbook

使用yaml编写

主要元素

Hosts 执行的远程主机列表

Tasks 任务集

Varniables 内置变量或自定义变量在playbook中调用

Templates 模板,可替代模板文件中的变量并实现一些简单的逻辑的文件

Handlers 和notit结合使用,由特定条件触发的操作,满足条件方可执行,否则不执行

tags标签

你可能感兴趣的:(linux)