zoukankan      html  css  js  c++  java
  • ansible

    ansible主要组成部分

    user: 普通用户,即system administrator
    cmdb: 配置管理数据库,api调用
    public/private cloud api调用
    user -》 ansible playbook -》 ansible

    利用 ansible实现管理的方式
    ad-hoc 即ansible命令 主要用于临时使用场景
    ansible-playbook主要用于长期规划好的,大型项目的场景,需要有前提的规划


    ansible-playbook剧本执行流程
    1,将已有的编排好的任务集写入 ansible-book
    2,通过ansible-playbook命令分拆任务集至每条ansible命令,按预定的规则执行

    ansible主要操作对象
    1 host主机
    2 networking网络设备

    注意事项:
    执行ansible的主机一般为主控端,中控, master或者堡垒机
    主控端 python 版本需要2.6以上
    被控端python 版本小于2.4需要安装python-simplejson
    被控端如开启selinux 需要安装 libselinux-python
    windows 不能做为主控端

    ansible的用法

    ansible通过ssh实现配置管理,应用部署,任务执行等功能,建议配置ansbile端能基于密钥认证的方式联系各被管理的节点
    ansible <host-pattern> [-m module_name] [-a args]
      --version 显示版本
      -m module 指定模块, 默认为command
      -v 详细过程 -vv -vvv更详细
      -k --ask-pass 提示输入ssh连接密码 默认key验证
      --list-hosts 显示主机列表 可简写 --list
      -K --ask-become-pass 提示输入sudo时的口令
      -C --check 检查 并不执行
      -T --timeout=TIMEOUT 执行命令超时时间
      -u --user=REMOTE_USER 执行远程执行的用户
      -b --become 代替旧版的sudo切换


    ansible-doc -s 模块名 即列出模块的使用详情

    ansible 基于key验证

    key验证

    ssh-keygen
    ssh-copy-id 192.168.30.101

    ansible的Host-pattern

    ansible的Host-pattern
    匹配主机的列表
    ALL:表示所有inventory中的所有主机
     ansible all -m ping 
    
    * 通配符
    ansible "*" -m ping
    ansible 192.168.1.* -m ping

    ansible 命令执行过程

    ansible 命令执行过程
    1 加载自己的配置文件 默认 /etc/ansible/ansible.cfg
    2 加载自己对应的模块文件 如command
    3 通过ansible将模块或者命令生成的临时py文件,并将该文件传送至远端服务器的对应执行用户 $HOME/.ansible/tmp/ansible-tem-数字/xxx.py文件
    4 给文件+x执行
    5 执行并返回结果
    6 删除临时py文件 ,sleep 0退出

    执行状态

    绿色:执行成功并且不需要改变的操作
    黄色:执行成功并且需要对目标主机变更
    红色:执行失败

    ansible command 通过参数 a执行命令

     ansible webgroup -a 'chdir=/home mkdir aaa'  chdir=/home 切换到home目录下 创建一个aaa 的文件

      ansible webgroup -a 'df -h'  # 查看 主机分组中的 内存配置

    ansible webgroup -a 'chmod +x /home/tang.py' # 给文件加执行权限

     

     ansible shell 模块

    ansible webgroup -m shell -a 'echo $HOSTNAME' # 参数要放在单引号中

    ansible script 模块 运行脚本

    ansible webgroup -m script -a '/root/host.sh'

    host.sh

    #! /bin/bash
    hostname

    返回详情

    103.100.208.80 | CHANGED => {
        "changed": true, 
        "rc": 0, 
        "stderr": "Shared connection to 103.100.208.80 closed.
    ", 
        "stderr_lines": [
            "Shared connection to 103.100.208.80 closed."
        ], 
        "stdout": "lalala
    ", 
        "stdout_lines": [
            "lalala"
        ]
    }

    ansible copy 模型

    ansible webgroup -m copy 'src=/root/ansible/selinux dest=/etc/selinux/config backup=yes'   backup=yes 是备份的意思

    ansible Hostname 管理主机名模块

    ansible node1 -m hostname -a 'name=websrv'

    ansible Cron 计划任务

    支持时间: minute, hour, day, month, weekday
    ansible webgroup -m cron -a "minute*/5 job='usr/sbin/ntpdate 172.16.0.1 &>/dev/null' name=Synctime" 创建任务
    ansible webgroup -m cron -a 'state=absent name=Synctime' 删除任务


    在控制的机器上 输入 crontab -e 查看定时任务

    ansible Fetch 模块

    从客户端取文件至服务器端,copy相反,目录可先tar
    ansible webgroup -m fetch -a 'src=/root/a.sh dest=/data/scripts'

    ansibel File 模块

    设置文件属性
    ansible webgroup -m file -a 'src=/root/a.sh owner=wang mode=755'
    ansible webgroup -m file 'src=/app/testfile dest=/app/testfile-link state=link' state=link 创建软连接 state=touch 创建文件 ,具体模式可以 ansible-doc -s file查看

    ansible yum 模块

    ansible webgroup -m yum -a 'name=vsftpd' state 来控制安装还是卸载

    ansible webgroup -m yum -a 'name=httpd state=latest'安装
    ansible webgroup -m yum -a 'name=httpd state=absent'删除

    安装多个包
    ansible webgroup -m yum -a 'name=vsftpd,memcached,httpd'

    安装本地的包 到被控制机器
    ansible webgroup -m yum -a 'name=path' path指在本机的绝对路径

    ansible Service 管理服务

    ansible webgroup -m service -a 'name=httpd state=stopped'  关闭服务
    ansible webgroup -m service -a 'name=httpd state=started' 开启服务
    ansible webgroup -m service -a 'name=httpd state=reloaded'
    ansible webgroup -m service -a 'name=httpd state=restarted'

    ansible User 管理用户

    ansible webgroup -m user -a 'name=user1 comment="test user" uid=2048 home=/app/user1 group=root'
    ansible webgroup -m user -a 'name=sysuser1 system=yes home=/app/sysuser1'
    ansible webgroup -m user -a 'name=user1 state=absent remove=yes' 删除用户及家目录等数据

    ansible Group 管理组

    ansible webgroup -m group -a 'name=testgroup system=yes'
    ansible webgroup -m group -a 'name=testgroup system=absent'

    ansible-galaxy

    连接https://galaxy.ansible.com/下载相应的roles

    列出所有安装的galaxy
    ansible-galaxy list
    安装 galaxy
    ansible-galaxy install geerlingguy.redis
    删除galaxy
    ansible-galaxy remove geerlingguy.redis
  • 相关阅读:
    python 入门
    element 使用问题总结
    element dialog 弹窗 解决每次先加载上一次数据再加载本次数据问题
    JS 对变量进行全文替换方法
    react源码解析10.commit阶段
    react源码解析9.diff算法
    react源码解析8.render阶段
    react源码解析7.Fiber架构
    react源码解析6.legacy模式和concurrent模式
    react源码解析5.jsx&核心api
  • 原文地址:https://www.cnblogs.com/tangda/p/14536701.html
Copyright © 2011-2022 走看看