Ansible 自动化运维工具

自动化运维工具 Ansible
基于python开发 分布式 无需客户端 轻量级 配置语法使用YAML语言 远程命令执行操作很强

自动化运维工具对比
    puppet 基于ruby开发 采用c/s架构 拓展性强 基于ssl 远程命令较弱
    saltstack 基于python开发 采用c/s架构 相对 puppet 更轻量级 配置语法使用yaml 使得配置脚本更简单 需要配置客户端以及服务器 每台被控制节点需要安装agent
    Ansible 基于python开发 分布式 无需客户端 轻量级 配置语法使用yaml语言 更强的远程命令执行操作
Ansible简介
    ansible 是自动化运维工具 基于python开发 分布式 无需客户端 轻量级 实现批量系统配置 批量程序部署 批量运行命令等功能 ansible 是基于模块工作的 本身没有皮力量部署能力 真正具有批量部署的是ansible所运行的模块 ansible只是提供框架
ansible 特性
    不需要被管控主机安装任何客户端 无服务器端 使用时直接运行命令即可 基于模块工作 可使用任意语句开发模块 使用yaml语言定制剧本playbook 基于ssh工作 可实现多级指挥 
    ansible插件
    connection plugins 连接插件 负责和被监控端实现通信 默认使用ssh连接
    host inventory 主机清单 配置被管控的主机
    modules 模块 核心模块 command模块 自定义模块
    plugins modules功能的补充 包括连接插件 邮件插件
    playbook 
ansible --version 查看版本
rpm -qc 跟软件名 查看软件本身目录和扩展插件目录 所有目录
vim /etc/ansible/hosts ansible主机清单文件
末尾
[组名]
主机
主机
[组名:vars]         #设置变量,vars--照写
ansible_ssh_port=22     
ansible_ssh_user=root   
ansible_ssh_private_key_file=/root/.ssh/id_rsa  
#ansible_ssh_pass=test      #也可以定义密码,如果没有互传秘钥可以使用密码。
vim /etc/ansible/ansible.cfg 主配置文件

配置完成后 ping 测试通不通
ansible -i all -m ping -o     -o把回显归为一行 -i指定清单文件 -m 模块名称(不加模块默认位command模块) -a传递给模块的参数 这里的ping是判断ssh端口是否存货 是否可以连接
Ad-Hoc 就是执行简单的命令 复杂的命令则为playbook
ansible-doc -l 查看所有模块 ansible-doc -s 跟模块 查看模块使用信息了解该模块
常用模块

ansible <目标主机组> -m yum -a "name=httpd state=present"

ansible-playbook -i 主机清单文件 playbook.yml --tags=标签 --limit 指定主机清单里某个主机

ansible 指定主机 -i 主机文件 -m 模块 -a “参数”
    远程复制备份模块 copy
    src=:指定源文件路径
    dest=:目标地址(拷贝到哪里)
    owner:指定属主
    group:指定属组
    mode:指定权限,可以以数字指定比如0644
    backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no
    软件包管理 yum模块
    state=     #状态是什么,干什么
    state=absent       用于remove安装包
    state=latest       表示最新的
    state=removed      表示卸载
    服务管理模块 service 模块
    state=started 启动
    state=stopped 停止
    state=restarted 重启
    state=started enabled=yes 开机自启
    文件模块file
    owner= 修改属主
    group= 修改属组
    mode= 修改权限
    path=修改文件路径
    recurse= 递归设置文件属性 只对目录有效 yes表示递归设置
    state=touch 创建一个新的空文件
    directory创建一个新目录
    收集信息模块setup 收集所有信息
    ansible 组名或用户 -m setup -a "filter=过滤查询项"
Playbook介绍
playbook 是用于配置 部署 和 管理被控节点的剧本 通过playbook的详细描述 执行其中的tasks
ansible通过不同的模块实现相应的管理
playbook是由yaml语言编写 yaml格式是类似与json的文件格式 便于理解 书写 阅读
一个剧本里可以有多个play 每个play只能有一个tasks 每个tasks可以有多个name
核心元素
    variables 变量元素 可传递给tasks/templates使用
    tasks 任务元素 由模块定义的操作列表 即调用模块完成任务
    Templates 模板元素 使用了模板语法的文本文件
    Handlers 处理器元素 通常指在某件事件满足时触发的操作
    Roles 角色元素
playbook基础组件
    name 定义playbook或者task的名称(描述信息) 每个play都可以完成一个任务
    hosts 用于指定要执行指定任务的主机
    user remote_user 则用于指定远程主机上的执行任务的用户
    tasks tasks中的任务逐个执行 完成第一个执行第二个
    vars 定义变量(不使用内部变量需要提前定义)
    vars_files 调用定义变量文件
    notify     任务执行结果如果是发生更改了的则触发定义在handler的任务执行
    handlers 用于当前关注的资源发生变化时采取一定指定的操作
    检测语法是否正确 ansible-playbook --syntax-check 跟yml名
    ansible-playbook 加剧本名为运行
    例句
    hosts:指定组或者用户
    user:指定用户执行远程命令
    vars_files:
        - 指定文件 可以调用里面的变量 下面直接用{{ 变量名 }} 可以直接调用
    tasks:
      - name: 指定任务名
         copy:(模块名 可以更换)
              notify: 跟任务名 上面执行成功之后 执行下面匹配任务名的任务
     handlers:承接上面的notify
       - name: 指定任务名
          copy:ser={{ item }} (相当于佛如循环取值)
          with_items:
        - 后跟值
        - 后跟值
    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值