• ansible常见模块使用


    一、特性

    幂等值: 一个任务执行一次和执行n此的效果一样,不因重复执行带来意外

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

    有Paramiko,PyYAML,Jinja2 (模板语言) 三个关键模块

    支持自定义模块

    部署简单,基于SSH

    支持playbook编排任务

    无需代理

    Ansible 主要组成部分

      USER 普通用户

      CMDB(配置管理数据库) API调用

      公有云私有云API调用

      USER -> Ansible Playbook -> Ansible

    利用ansible实现管理的方式

      Ad-Hot ansible命令,主要用于临时命令使用场景

      Ansible-playbook主要用于长期规划好的,大型项目场景

    安装和模块使用

    服务端
    yum -y install ansible
    ssh-keygen
    ssh-copy-id -i 远程主机

    ansible-doc -s 模块名 查看模块的用法
    ansible all --list-hosts 查看能被管理的主机

    配有配置ssh的时候也可以手动输入密码执行
    ansible ip -m ping -k (验证信息在一定时间内是有缓存的)
    -u 指定远程执行命令的用户,默认是root
    -b 代理旧版的sudo
    --become-user=UserName 指定sudo的用户,默认是root
    -K 提示输入sudo的口令


    二、常见模块使用

    ansible的host-pattern

    逻辑与
      ansible "websever:&dbserver" -m ping
      在webserver组并且在dbserver组中的主机
    逻辑非
      
    ansible 'websever:!dbserver' -m ping
    在webserver组不在在dbserver组中的主机
    正则表达式
    综合逻辑

    ansible命令执行

    1. 加载自己的配置文件

    2.加载自己对应的模块文件

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

    4.给文件+x权限

    5.执行并返回结果

    6.删除临时py文件,退出

    ansible使用示例

    以wang用户执行ping存活检测
    ansible all -m ping -u wang -k

    以wang sudo至root执行ping存活检测
    ansible all -m ping -u wang -b -k

    以wang sudo至ivy用户执行ping存活检测
    ansible all -m ping -u wnag -k -b --become-user=ivy

    以wang sudo至root用户执行ls
    ansible all -m command -u wang -a 'ls /root' -b become-user=root -k -K

    补充配置文件修改的两个地方

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

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

    模块使用

    查看模块帮助信息

    ansible-doc -s 模块名称

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

    command
    此模块是默认的可以不写
    ansible all -m command -a 'ls /data'

    却换到目录里面在执行
    ansible all -m command -a 'chdir=/data ls'
    如果文件存在就不执行,不存在就执行
    ansible all -m command -a 'creates=/etc/fstab ls'

    如果文件不存在就执行
    ansible all -m command -a 'remove=/etc/fstab ls'

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

    给用户改密码
    ansible all -m shell -a 'echo ivy | passwd --stdin wang'
    查看主机名
    ansible all -m shell -a 'echo $HOSTNAME'

    script: 在远程主机上运行ansible服务器上的脚本

    ansible all -m script -a '/script/script.sh'

    copy: 从主控端复制文件到远程主机

    ansible all -m copy -a 'src=/etc/fstab dest=/data'
    复制时改权限
    ansible all -m copy -a 'src=/etc/fstab dest=/data mode=600 owner=wang group=bin backup=yes'
    指定内容,直接生成目标文件
    ansible all -m copy -a "content='内容' dest=/data/file.txt"

    fetch: 从远程端抓取文件过来,和copy相反,但目前只支持文件

    ansible all -m fetch -a 'src=/etc/fstab dest=/data'

    抓过来的文件,会以远程主机ip命令生成一个文件夹,文件放在此文件夹下

    
    

    file: 修改远程主机上已存在的文件属性

    ansible all -m file -a 'path=/data/fstab owner=wang mode=700'

    创建软连接, 需要指明基于哪个文件来创建,创建的文件放在哪里
    ansible all -m file -a 'src=/data/fstab path=/data/fstab.link state=link'
    创建空文件
    ansible all -m file -a 'path=/data/f1.txt state=touch'

    删除文件
    ansible all -m file -a 'path=/data/f1.txt state=absent'

    清空文件夹下的所有,一般要注意了,除了挂载点删不了别的都能删
    ansible all -m file -a 'path=/data/ state=absent'

    unarchive: 解压缩

    1. 将ansible主机上的压缩包在 本地加压后传到远程主机上,设置copy=yes
    2. 将远程主机上的某个压缩包解压到指定路径下,设置copy=no
    src: 源路径
    dest: 远程主机上的目标路径
    mode: 设置解压后的文件权限

    传压缩包的过程中顺便解包
    ansible all -m unarchive -a 'src=/root/fstab.tar.gz dest=/data/ owner=wang mode=700'

     解远程压缩包

    ansible all -m copy -a 'src=fstab.tar.gz dest=/data/'

    ansible all -m unarchive -a 'src=/data/fstab.tar.gz dest=/data/ copy=no'

    archive: 打包压缩

    ansible all -m archive -a 'path=/etc/sysconfig dest=/data/sysconfig.tar.bz2 format=bz2 owner=wang mode=0777'
    path: 代表要打包的路径
    dest: 代表打包后存放的路径
    format: 代表达包的方式

    hostname: 管理主机名, 针对单个主机

    ansible 192.63.1.1 -m hostname -a 'centos'

    cron: 计划任务

    支持时间: minute hour day month weekday
    创建计划任务
    ansible all -m cron -a "minute=*/5 job='/usr/sbin/ntpdate name=synctime'"
    禁用计划任务
    ansible all -m cron -a "minute=*/5 job='/usr/sbin/ntpdate name=synctime disabled=true'"
    删除计划任务
    ansible all -m cron -a "minute=*/5 job='/usr/sbin/ntpdate name=synctime state=absent'"

    yum: 管理包

    ansible all -m yum -a 'name=httpd state=present' 安装
    ansible all -m yum -a 'name=httpd state=absent' 删除

    service: 管理服务

    ansible all -m service -a 'name=httpd state=stopped' 停止服务
    ansible all -m service -a 'name=httpd state=started enabled=yes' 启用服务
    ansible all -m service -a 'name=httpd state=reloadded' 重载包
    ansible all -m service -a 'name=httpd state=restarted' 重启服务

    user: 管理用户

    ansible all -m user -a 'name=user1 comment="test user" uid=2088 home=/app/user1 group=root'
    组要事先已经存在的 否则会报错

    创建系统用户
    ansible all -m user -a 'name=sysuser1 system=yes home=/app/sysuser'

    删除用户
    ansible all -m user -a 'name=user1 state=absent remove=yes'
    remove=yes: 代表连家目录也一并删除

    group: 管理组

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

    工具

    ansible-galaxy: 把别人写好的role下载下来

    ansible-pull: 推送命令至远程,效率无限提升,对运维要求比较高

    ansible-ploybook

    ansible-console: 交互式运行

    ansible-valut: 管理加密yml文件

    ansible-vault [create|decrypt|edit|encrypt|rekey|view]
    创建新文件 解密 编辑 加密 修改口令 查看

  • 相关阅读:
    数据分析人员常犯的五大错误以及预防方法
    SAS中的Order By - Proc Sort
    SAS中的Order By - Proc Sort
    安全数据分析理念的变化
    安全数据分析理念的变化
    spss如何选择需要的变量?
    更改VS2010的[默认开发语言]
    POJ 1273 Drainage Ditches (网络最大流)
    HLS图像处理系列——肤色检測
    并发问题:大数据量的訪问
  • 原文地址:https://www.cnblogs.com/guniang/p/13369566.html
Copyright © 2020-2023  润新知