ansible

目录

ansible的特性:

ansible命令格式

查看模块

ansible的常用模块

inventory主机清单管理

playbook剧本

tasks任务的模块语法格式:

template配置模板模块


ansible 自动化运维工具,也叫机器管理工具。可以实现批量管理成百上千的多台主机,是应用级别的跨主机编排工具。

ansible的特性:

1)无客户端agent的存在,不需要在被控制的节点上安装任何客户端应用。
2)通过ssh协议与被控制节点通信
3)基于模块工作的,可以通过模块实现在被控制节点上执行相应的命令操作
4)很多模块具有幂等性,即可实现多次模块操作的状态如果没有发生改变,则不会重复执行


ansible命令格式

ansible  组名  -m 模块名  -a '模块参数'

查看模块

ansible-doc -l               #列出当前ansible的所有模块
ansible-doc -s 模块名        #查看指定模块的信息


ansible的常用模块

command     在远程主机执行linux命令,但不支持管道、重定向等特殊符号,是ansible的默认模块     chdir  creates  removes
shell       在远程主机执行linux命令,支持管道、重定向等特殊符号     chdir  creates  removes
cron        在远程主机设置crontab计划任务    minute  hour  day  month  weekday  job  name  state=present|absent
user        在远程主机设管理用户账户     name  uid  group  groups  shell  create_home  remove  state=present|absent
group       在远程主机设管理组账户    name  gid  state=present|absent
copy        将ansible主机的文件/目录/内容复制到远程主机    src  dest  content  mode  owner  group
file        在远程主机管理文件/目录  path  mode  owner  group  state=absent|touch|directory|link  src(指定软链接的源路径,path指定软链接文件理解)
hostname    在远程主机设置主机名    name
ping        检测与远程主机的连通性
yum|apt     在远程主机使用yum|apt-get管理软件包    name  state=present|absent|latest
service|systemd    在远程主机使用systemctl管理服务状态     name   state=started|stopped|restarted|reloaded  enabled=yes|no|true|false
script      在远程主机执行ansible主机上的shell脚本
mount       在远程主机执行挂载、解挂操作    src  path  fstype  state=mounted|unmounted|absent  opts
archive     在远程主机压缩文件/目录    path  dest  format  remove
unarchive   将ansible主机上的或远程主机上的压缩包解压缩到远程主机的指定位置    copy(remote_src)  src  dest
replace     在远程主机修改通过正则表达式匹配的文件内容    path  regexp  replace  after  before  backup
setup       收集远程主机的系统信息(facts信息)    filter


inventory主机清单管理

主机清单配置文件   /etc/ansible/hosts

格式:
[组名]
主机IP[:ssh端口]     #默认是 22 端口
主机名[:ssh端口]
主机IP[0:255]        #设置连续的主机列表范围
主机名[a:z]    ansible_port=     ansible_user=    ansible_password=           #设置主机变量

[组名:vars]             #设置组变量
ansible_port=
ansible_user=
ansible_password=

[大组名:children]       #设置嵌套组
组名1
组名2
组名3


playbook剧本

vim XXX.yaml  XXX.yml
---
- name:                 #设置play的名称
  hosts:                #指定执行此play的远程主机组
  remote_user:          #指定执行此play的用户
  gather_facts:         #设置是否收集facts信息 yes|no|true|false
  tasks:                #指定此play的任务列表
  - name:                  #定义任务的名称
    模块名: 模块参数       #定义任务要使用的模块和参数(键值对格式)
  - name:  
    模块名: 模块参数
    ignore_errors: true    #忽略此任务的失败
  - name:  
    模块名: 模块参数
    notify: '任务名'       #定义此任务执行结果为changed状态时要触发的handlers任务
  - name:  
    模块名: 模块参数
    when:                  #定义条件表达式(== != > >= < <=),条件成立时执行此task任务,否则不执行此任务
  - name:  
    模块名: 模块参数={{item}}
    with_items:            #定义循环列表
  - name:  
    模块名: 模块参数
    tags:                  #定义任务的标签,ansible-playbook --tags="标签" 可实现仅执行拥有指定标签的任务(拥有always标签的任务总是执行)
    - 标签1
    - 标签2
    ....
    
  handlers:
  - name: 任务名
    模块名: 模块参数


ansible-playbook XXX.yaml -k -K  
                          --syntax-check
                          --list-task
                          --list-hosts
                          --start-at-task="任务名称"
                          --tags="标签"


tasks任务的模块语法格式:

纵向格式:
    模块名:
    - 参数1: 值
    - 参数2: "{{变量名}}"
        ....
横向格式:
    模块名: 参数1=值  参数2={{变量名}} ....

        
with_items 和 vars 的语法格式
纵向格式:
  - name:
    with_items:
    - 值1
    - 值2
    ....
    模块名: 参数={{item}}

  vars:
    变量名:
    - 值1
    - 值2
    ....
  tasks:
  - name:
    模块名: 参数={{item}}
    with_items: "{{变量名}}"

  #值为对象类型(键值对字段)时:
    with_items:
    - key1: 值1
      key2: 值2
    - key1: 值3
      key2: 值4
    ....

  vars:
    变量名:
    - key1: 值1
      key2: 值2
    - key1: 值3
      key2: 值4
    ....
    
横向格式:
  #值为纯量类型时:
    with_items: [值1, 值2, ....]

  vars:
    变量名: [值1, 值2, ....]

  #值为对象类型(键值对字段)时:
    with_items:
    - {key1: 值1, key2: 值2}
    - {key1: 值3, key2: 值4}
    ....


template配置模板模块

1)先准备一个 XXX.j2 配置模板文件,在模板文件中使用 {{变量名}} 格式引用主机变量、组变量、facts信息字段变量或vars字段自定义的变量的值
2)编辑 playbook 文件,在文件中的 tasks 任务中定义 template 模块配置(template: src=XXX.j2文件路径 dest=远程主机文件路径)
 

相关推荐

  1. <span style='color:red;'>Ansible</span>

    Ansible

    2024-03-10 15:22:04      43 阅读
  2. <span style='color:red;'>Ansible</span>

    Ansible

    2024-03-10 15:22:04      57 阅读
  3. <span style='color:red;'>ansible</span>

    ansible

    2024-03-10 15:22:04      47 阅读
  4. <span style='color:red;'>ansible</span>

    ansible

    2024-03-10 15:22:04      60 阅读
  5. <span style='color:red;'>ansible</span>

    ansible

    2024-03-10 15:22:04      53 阅读
  6. Ansible

    2024-03-10 15:22:04       46 阅读
  7. <span style='color:red;'>Ansible</span>

    Ansible

    2024-03-10 15:22:04      39 阅读
  8. <span style='color:red;'>ansible</span>

    ansible

    2024-03-10 15:22:04      62 阅读
  9. Ansible

    2024-03-10 15:22:04       45 阅读
  10. <span style='color:red;'>Ansible</span>

    Ansible

    2024-03-10 15:22:04      35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 15:22:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 15:22:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 15:22:04       87 阅读
  4. Python语言-面向对象

    2024-03-10 15:22:04       96 阅读

热门阅读

  1. 自动化运维工具----Ansible playbook详解

    2024-03-10 15:22:04       47 阅读
  2. 【学习心得】webpack技术在爬虫逆向中的应用

    2024-03-10 15:22:04       43 阅读
  3. 如何学习ChatGPT?从入门到精通(附资料下载)

    2024-03-10 15:22:04       126 阅读
  4. EF框架常见异常处理汇总

    2024-03-10 15:22:04       46 阅读
  5. L1-095 分寝室(PTA)

    2024-03-10 15:22:04       32 阅读
  6. 计网|谢希仁版|第一章课后习题

    2024-03-10 15:22:04       38 阅读
  7. 人工智能、深度学习、机器学习书目推荐

    2024-03-10 15:22:04       46 阅读
  8. C++ 疑难点

    2024-03-10 15:22:04       37 阅读
  9. STM32 (1)

    STM32 (1)

    2024-03-10 15:22:04      52 阅读
  10. 一次压测经验过程的经验记录

    2024-03-10 15:22:04       46 阅读
  11. Hudi小文件压缩

    2024-03-10 15:22:04       43 阅读
  12. php 面试题目

    2024-03-10 15:22:04       44 阅读