ansible

本文详细介绍了Ansible的特性,如无客户端、SSH通信、模块驱动等,并讲解了其命令格式、常用模块如执行命令、管理用户、配置文件操作等。此外,还涵盖了inventory主机清单管理、playbook剧本编写以及template配置模板的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

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=远程主机文件路径)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值