当前位置: 首页 > news >正文

自动化_Ansible学习笔记

文章目录

      • Ansible 介绍
        • 配置文件
          • 主配置文件优先级
        • 常用命令
        • ansible-playbook
      • ad-hoc
      • inventory 主机清单
      • Playbook 剧本
        • YAML格式
      • ansible 模块
        • 介绍
        • 模块对应功能
        • Commands modules(命令模块)
          • command (命令)
          • shell (外壳)
        • 官方帮助文档 模块索引
        • playbook 开头示例
        • 系统类
          • setup (收集远程主机的一些基本信息)
          • group (组)
          • user (用户)
          • service (服务)
          • systemd (服务)
          • cron (计划任务)
          • hostname (修改主机名)
          • service (服务管理)
          • mount 挂载点
        • 文件类
          • synchronize(文件同步)
          • unarchive (解压缩)
          • script (脚本)
          • file (文件)
          • copy (复制到远程主机)
          • fetch (复制到ansible端)
          • find (查找)
          • replace (替换文件内容)
          • lineinfile (修改文件内容)
          • blockinfile (插入文本块)
          • template (根据模板生成文件)
        • 包管理
          • yum (软件包)
          • package (通用包管理)
          • pacman (ArchLinux)
          • yum_repository (yum仓库)
        • 网络安全类
          • Net Tools 网络工具
            • get_url (下载文件)
          • firewalld (防火墙)
        • Utilities (实用工具)
          • debug (调试信息)
          • fail (失败,停止后续)
        • Source Control modules(源代码控制模块)
          • git
      • playbook示例
        • lineinfile 替换文件内容
      • Ansible 常见问题
        • 指定客户端Python的位置

Ansible 介绍

  1. 官网
  2. galaxy
  3. 最新版模块索引
  4. 2.9版模块索引
  5. 安装
    curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum -y install ansible
    
配置文件
  1. 配置文件
    文件位置
    配置文件
    主配置文件/etc/ansible/ansible.cfg
    主机清单/etc/ansible/hosts
    存放角色目录/etc/ansible/roles/
    执行文件
    主程序/usr/bin/ansible
    功能查看/usr/bin/ansible-doc
    上传下载优秀代码/usr/bin/ansible-galaxy
    自动化任务/usr/bin/ansible-playbook
    文件加密/usr/bin/ansible-vault
    用户交互/usr/bin/ansible-console
  2. 主配置文件介绍
    参数解释
    inventory主机清单文件
    library库位置
    module_utils模块位置
    remote_tmp远程临时目录
    local_tmp本地临时目录
    plugin_filters_cfg
    forks并发操作主机数
    poll_interval拉数据间隔
    sudo_user以sudo身份执行命令
    remote_port默认远程主机ssh端口
    host_key_checking检查远程主机的host_key,建议取消即"False"
    private_key_file私钥文件
    log_path日志文件,建议允许,即取消注释
  3. 如果使用普通用户则sudo到root,vim /etc/ansible/ansible.cfg开启下列选项
    [privilege_escalation]  ##这一部分为提升权限的参数,如果使用普通用户需要开启。
    become=True
    become_method=sudo
    become_user=root
    become_ask_pass=False
    
  4. 主机清单文件inventory默认/etc/ansible/hosts
    用法解释
    ansible_ssh_host指定IP地址
    ansible_connection=ssh指定通过ssh连接
    ansible_ssh_port=22指定SSH端口
    ansible_ssh_user=osboxes指定ssh用户
    ansible_ssh_pass=China123指定ssh密码
    node[1:3]node1-3,共3台主机
    var=user定义变量’var’的值为’user’
    [web:vars]下面的变量为web组的变量
  5. inventory文件示例
    #表示一台主机
    test1 ansible_ssh_host=10.0.0.1 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=password
    #表示一个主机组
    [test]
    10.0.0.1 ansible_connection=ssh ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=password
    
主配置文件优先级
优先级位置说明
1ANSIBLE_CONFIG环境变量指定
2./ansible.cfg推荐的,当前目录下的ansible.cfg
3~/.ansible.cfg用户家目录下的.ansible.cfg
4/etc/ansible/ansible.cfg
常用命令
  1. 主要命令选项
    选项解释
    ansible
    语法ansible <主机清单> [-m 模块名] [-a 参数]
    –version显示版本
    -m指定模块
    -v详细模式
    –list显示主机列表
    -k密码验证
    -u指定连接使用的用户
    -b在远程上使用sudo
    -Ksudo密码
    ansible-doc
    -a显示所有模块的文档
    -l显示可用模块
    -s简洁帮助信息
ansible-playbook
  1. 剧本文件以ymlyaml为扩展名

  2. 使用方法

    ansible-playbook 命令选项 文件名
    
  3. 可以调用的变量

    #安装命令查看,可以调用的变量
    yum install -y facter
    facter -p
    
  4. ansible-playbook 命令选项

    选项解释
    -C,–check检查语法,模拟执行过程
    –syntax-check检查语法
    –list-hosts列出主机
    –list-tasks列出所有任务
    –list-tags列出标签
    –step一次执行一步
    -t仅执行指定的标签
    -e直接传递变量
  5. 文件示例

    ---
    - hosts: 主机remote_user: 远程用户sudo_user: 使用的用户身份#任务列表tasks:- name: 名称#模块:yum: name=httpd state=latest notify: 调用的Handlerswhen: 当满足条件时(使用jinja2语法格式)才运行此taskignore_errors: True(当此模块错误时忽略错误,继续执行其他)tags: test(打上标签,使用-t只运行指定标签的task)- name: start httpdservice: name=httpd state=started#定义变量vars:- host: localhost#包含了模板语法的文本文件Templates:#由特定条件触发的任务Handlers:  
    - hosts: db
    
  6. playbook 示例

    示例解释
    ansible_distribution == "CentOS" and ansible_distribution_major_version == "7"当操作系统为CentOS7是才运行此task

ad-hoc

inventory 主机清单

Playbook 剧本

YAML格式
  1. 用三个-号开头,用于标记文档的开始,可以省略
  2. 注释符号为:#
  3. 一般情况字符串不需要用引号引起来,即使中间有空格
  4. 变量引用{{ 变量名 }}
  5. 布尔类型
    1. True,yes
    2. False,no
  6. 列表
    1. 使用"-"作为定界符,如
      - My Fair Lady
      - OK lahoma
      - The Pirates of Penzance
      
  7. 字典
    1.

ansible 模块

介绍
  1. [2.9版模块索引](https://docs.ansible.com/ansible/2.9/modules
模块对应功能
  1. 功能对应表
    模块|功能
    -|-|-
    parted|硬盘分区|
    filesystem|分区格式化
    copy|复制文件
    mount|挂载点
    file|文件软链接
    script|在远程主机上运行shell脚本
Commands modules(命令模块)
command (命令)
  1. 参数
    参数解释
    <free_form>指定远程命令,直接使用命令,不含free_form
    chdir执行命令前进入的目录
    creates当指定的文件存在时,就不执行命令
    removes当指定文件不存在时,就不执行命令
  2. 示例
    - name: testhosts: temp2gather_facts: nobecome: yestasks:- name: cat hostscommand: cat /etc/hostsregister: hosts_value- debug: var=hosts_value.stdout_lines
    
shell (外壳)
  1. 官方文档
  2. 参数
    参数解释
    free_form指定命令
    chdir指定执行命令前先进入的目录
    creates指定文件存在,就不执行命令
    removes指定文件不存在,就不执行命令
    executable/bin/sh(默认),指定使用的shell
  3. 示例
    - name: Change the working directory to somedir/ before executing the command.shell: somescript.sh >> somelog.txtargs:chdir: somedir/
    
官方帮助文档 模块索引

模块索引

playbook 开头示例
- name: testhosts: temp2gather_facts: nobecome: yes
系统类
setup (收集远程主机的一些基本信息)
1. 选项解释
filter过滤
变量解释
ansible_devices仅显示磁盘设备信息。
ansible_default_ipv4.interface默认IPv4接口
ansible_default_ipv4.address默认IPv4地址
ansible_default_ipv4.gateway默认IPv4网关
ansible_interfaces所有接口
ansible_distribution显示是什么系统,例:centos,suse等。
ansible_distribution_major_version显示是系统主版本。
ansible_distribution_version仅显示系统版本。
ansible_machine显示系统类型,例:32位,还是64位。
ansible_eth0仅显示eth0的信息。
ansible_hostname仅显示主机名。
ansible_kernel仅显示内核版本。
ansible_lvm显示lvm相关信息。
ansible_memtotal_mb显示系统总内存。
ansible_memfree_mb显示可用系统内存。
ansible_memory_mb详细显示内存情况。
ansible_swaptotal_mb显示总的swap内存。
ansible_swapfree_mb显示swap内存的可用内存。
ansible_mounts显示系统磁盘挂载情况。
ansible_processor显示cpu个数(具体显示每个cpu的型号)。
ansible_processor_vcpus显示cpu个数(只显示总的个数)。
ansible_pkg_mgr安装包管理器,如:yum,apt
group (组)
  1. 参数
    参数解释
    <name>指定要操作的组名称
    statepresent(默认);absent:删除
  2. 示例
      tasks:- name: Ensure group "somegroup" existsgroup:name: somegroupstate: presentgid: 2000
    
user (用户)
  1. 官方说明
  2. 参数
    参数解释
    <name>指定用户
    group指定基本组
    gourps指定附加组
    append追加附加组,而不覆盖附加组
    shell指定用户默认shell
    uid指定UID
    expires指定过期时间,值为unix时间戳获取命令:date -d 2018-12-31 +%s
    comment注释
    statepresent(默认):存在;absent:删除
    remove是否删除家目录
    password指定加密后的密码.加密命令:import crypt; crypt.crypt(‘明文密码’)
    update_passwordalways(默认):如果 password 参数设置的值与用户当前的加密过的密码字符串不一致,则直接更新用户的密码.on_create:如果 password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定。如果是新创建的用户,即使此参数设置为 on_create,也会将用户的密码设置为 password 参数对应的值。
    generate_ssh_keyno(默认):生成 ssh 密钥对,如果已有则不操作
    ssh_key_file自定义生成 ssh 私钥的路径和名称
    ssh_key_comment注释信息,默认的注释信息为”ansible-generated on 远程主机的主机名”
    ssh_key_passphrase在创建证书时,使用此参数设置私钥的密码
    ssh_key_type设置密钥对的类型。默认密钥类型为 rsa
  3. 示例
    ---
    - name: Added a consultant whose account you want to expireuser:name: tftpgroup: ftpstate: presentremove: yesshell: /usr/sbin/nologinuid: 1800comment: FTP userpassword: $1$hLGoLIZR$vmyUeES3TTHNgGgawgIw7/
    
  4. 安装passlib后可使用明文密码
  5. 安装passlib
    pip install passlib
    
  6. 示例
    - name: Added a consultant whose account you want to expireuser:name: user1#group: user1state: presentremove: yesshell: /usr/bin/bashuid: 1800comment: userpassword: "{{'password' | password_hash('sha512')}}"
    
service (服务)
  1. 参数
    参数解释
    <name>服务名
    statestarted:启动;stopped:停止;restarted:重启;reloaded:刷新
    enabled是否开机自启
  2. 示例
    - name:      redhat | Ensuring DNSMasq Service is Enabled and Startedservice:name:    dnsmasqstate:   startedenabled: truebecome:    true
    
systemd (服务)
  1. 官方文档
  2. 参数
    参数选项默认解释
    daemon_reexec可选no重排序列
    daemon_reload可选no重载配置
    enabled可选开机自启
    name必选服务名称
    state可选服务状态:reloaded,restarted,started,stopped)
  3. 示例
    - name: httpdsystemd:name: httpdstate: restarteddaemon_reload: yesenabled: yes- name: restart service cron on centos, in all cases, also issue daemon-reload to pick up config changessystemd:state: restarteddaemon_reload: yesname: crond
    
cron (计划任务)
  1. 参数
    参数解释
    minute分钟,默认*
    hour小时,默认*
    day天,默认*
    month月,默认*
    weekday周,默认*
    special_time@+值.reboot(重启后)、yearly(每年)、annually(每年,与yearly相同)、monthly(每月)、weekly(每周)、daily(每天)、hourly(每时)
    注意以上全为默认时表示每秒执行一次
    user用户,默认root
    job执行的脚本或命令
    name指定名称
    state对name操作,absent表示删除
    disabled是否禁用
    backup是否备份
hostname (修改主机名)
  1. 官方说明
  2. 参数
    参数解释
    name定义主机名
    use策略,如果未指定使用自动;generic,debian,sles,redhat,alpine,systemd,openrc,openbsd,solaris,freebsd
  3. 示例
    - hostname:name: web01
    
service (服务管理)
  1. 官方文档
  2. 参数
    参数解释
    name必选,服务名称
    enabled可选,
    state可选,reloaded,restarted,started,stopped
mount 挂载点
  1. 官方文档
  2. 参数
    参数取值解释
    backup布尔,默认:no创建一个包含时间戳信息的备份文件
    boot布尔,默认:yes确定文件系统是否应在引导时挂载,仅适用于 Solaris 系统
    fstab字符串
    fstype字符串文件系统类型
    opts字符串挂载选项
    path路径挂载点的路径
    src路径要安装在path上的设备
    state字符串,absent/mounted/present/unmounted/remounted
  3. 解释
    1. state
      1. mounted 在/etc/fstab中加入,并挂载,如果挂载点不存在就创建
      2. present 在/etc/fstab中加入,不触发挂载
      3. absent 在/etc/fstab中删除,解除挂载
      4. unmounted 不修改/etc/fstab,仅仅卸载
  4. 示例
    # Before 2.3, option 'name' was used instead of 'path'
    - name: Mount DVD read-only
    mount:path: /mnt/dvdsrc: /dev/sr0fstype: iso9660opts: ro,noautostate: present- name: Mount up device by label
    mount:path: /srv/disksrc: LABEL=SOME_LABELfstype: ext4state: present- name: Mount up device by UUID
    mount:path: /homesrc: UUID=b3e48f45-f933-4c8e-a700-22a159ec9077fstype: xfsopts: noatimestate: present- name: Unmount a mounted volume
    mount:path: /tmp/mnt-pntstate: unmounted- name: Mount and bind a volume
    mount:path: /system/new_volume/bootsrc: /bootopts: bindstate: mountedfstype: none
    
文件类
  1. 官方文档
synchronize(文件同步)
  1. 官方文档

  2. 参数

    参数解释
    src必选,源文件,可以是绝对或相对路径
    dest必选,目标文件,可以是绝对或相对路径
    delete可选,删除源是不存在的文件
    mode可选,默认是push,push模式本地是源,pull模式远程是源
  3. 示例

    - name: sync filessynchronize:src: /usr/local/srcdest: /usr/local/srcdelete: yesmode: push
    
unarchive (解压缩)
  1. 官方文档
  2. 参数
    参数解释
    src必选,可以是本地路径,也可以是远程路径,如果是远程路径需要设置’copy=no’
    dest必选,远程主机的目标路径
    copy可选,yes:本地解压后传到远程主机;no:在远程主机上操作
    mode可选,解压后的文件权限如0644
    remote_src boolean可选,yes表示文件在远程主机上
  3. 示例
    - name: Unarchive a file that is already on the remote machineunarchive:src: "{{ aria2_dest }}"dest: /usr/local/srcremote_src: yes- name: Unarchive a file that needs to be downloaded (added in 2.0)unarchive:src: https://example.com/example.zipdest: /usr/local/binremote_src: yes
    
script (脚本)
  1. 参数
    参数解释
    free_form指定ansible端脚本
    chdir执行脚本前,先进入的远程目录
    creates指定文件存在就不执行脚本
    removes指定文件不存在就不执行脚本
file (文件)
  1. 官方文档
  2. 参数
    参数解释
    <path/dest/name>指定文件
    statedirectory:目录;touch:文件;link:软连接;hard:硬连接;absent:删除
    src指定软硬链接源
    forceyes:强制创建连接
    owner指定属主
    group指定属组
    mode权限,如775.suid:4700
    recurseyes:递规目录
  3. 示例
    - name: soft_linktags: linkfile:name: /usr/bin/aria2cstate: linksrc: /home/program/aria2/bin/aria2c- name: Create a directory if it does not existfile:path: /etc/some_directorystate: directorymode: '0755'
    
copy (复制到远程主机)
  1. 官方文档_2.9版
  2. 官方文档_最新版
  3. 目录如果不存在会报错
  4. 源目录中最后使用/表示复制目录和目录下的文件
  5. 参数
    参数解释
    src指定ansible端文件
    dest远程主机端文件
    content文件内容,与src参数冲突
    force强制覆盖
    backup文件内容不同时是否备份
    owner属主
    group属组
    mode权限.如:0644,u+x
  6. 示例
    - name: Copy file with owner and permissions
    ansible.builtin.copy:src: /srv/myfiles/foo.confdest: /etc/foo.confowner: foogroup: foomode: '0644'- name: Copy file with owner and permission, using symbolic representation
    ansible.builtin.copy:src: /srv/myfiles/foo.confdest: /etc/foo.confowner: foogroup: foomode: u=rw,g=r,o=r- name: Another symbolic mode example, adding some permissions and removing others
    ansible.builtin.copy:src: /srv/myfiles/foo.confdest: /etc/foo.confowner: foogroup: foomode: u+rw,g-wx,o-rwx- name: Copy a new "ntp.conf" file into place, backing up the original if it differs from the copied version
    ansible.builtin.copy:src: /mine/ntp.confdest: /etc/ntp.confowner: rootgroup: rootmode: '0644'backup: yes- name: Copy a new "sudoers" file into place, after passing validation with visudo
    ansible.builtin.copy:src: /mine/sudoersdest: /etc/sudoersvalidate: /usr/sbin/visudo -csf %s- name: Copy a "sudoers" file on the remote machine for editing
    ansible.builtin.copy:src: /etc/sudoersdest: /etc/sudoers.editremote_src: yesvalidate: /usr/sbin/visudo -csf %s- name: Copy using inline content
    ansible.builtin.copy:content: '# This file was moved to /etc/other.conf'dest: /etc/mine.conf- name: If follow=yes, /path/to/file will be overwritten by contents of foo.conf
    ansible.builtin.copy:src: /etc/foo.confdest: /path/to/link  # link to /path/to/filefollow: yes- name: If follow=no, /path/to/link will become a file and be overwritten by contents of foo.conf
    ansible.builtin.copy:src: /etc/foo.confdest: /path/to/link  # link to /path/to/filefollow: no
    
fetch (复制到ansible端)
  1. 官方文档_2,9版
  2. 官方文档_最新版
  3. 参数
    参数解释
    src远程主机文件
    destansible端文件
find (查找)
  1. 参数
    参数解释
    <paths/path/name>指定在哪个目录中查找文件,可以指定多个路径,路径间用逗号隔开
    recurseno(默认),不递规目录;yes:递规
    hiddenno(默认),不含隐藏文件;yes:含隐藏文件
    file_typefile(默认)文件;directory:目录;link:软连接;any:所有
    patterns指定文件名称,支持通配符,正则需要下面参数
    use_regex使patterns 参数支持正则表达式
    contains根据文章内容查找文件,此参数的值为一个正则表达式
    age根据时间范围查找文件,默认以文件的 mtime 为准与指定的时间进行对比.3d:3天前;-3d:3天内.可以使用的单位有秒(s)、分(m)、时(h)、天(d)、星期(w)。
    age_stampmtime(默认),atime、ctime
    size文件大小,3m:大于3M;-50k:小于50K;可以使用的单位有 t、g、m、k、b
    get_checksum同时返回对应文件的 sha1校验码
replace (替换文件内容)
  1. 参数
    参数解释
    <path>指定要操作的文件
    regexp指定python 正则表达式,文件中与正则匹配的字符串将会被替换。
    replace指定最终要替换成的字符串
    backup是否备份
lineinfile (修改文件内容)
  1. 官方文档
  2. 可以借助lineinfile模块,确保"某一行文本"存在于指定的文件中,或者确保从文件中删除指定的"文本" (即确保指定的文本不存在于文件中) ,还可以根据正则表达式,替换"某一行文本"。
  3. 参数
    参数解释
    指定要操作的文件
    line指定文本内容
    regexp指定正则表达式,如果不止一行能够匹配正则,那么只有最后一个匹配正则的行才会被替换,但是如果指定的表达式没有匹配到任何一行,则插入到末尾
    stateabsent:删除;present:默认
    backrefs=yes时:line参数中就能对regexp参数中的分组进行后向引用,当正则没有匹配到任何的行时,则不会对文件进行任何操作
    insertafterEOF(默认):插入到末尾;值设置为正则表达式,表示将文本插入到匹配到正则的行之后,,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略
    insertbeforeBOF(默认):插入到开头;值设置为正则表达式,表示将文本插入到匹配到正则的行之前,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。
    backup是否在修改文件之前对文件进行备份
    create当要操作的文件并不存在时,是否创建对应的文件
  4. 示例
    - name: Configure Apache.lineinfile:dest: "{{ apache_server_root }}/conf/{{ apache_daemon }}.conf"regexp: "{{ item.regexp }}"line: "{{ item.line }}"state: presentwith_items: "{{ apache_ports_configuration_items }}"notify: restart apache
    
blockinfile (插入文本块)
  1. 官方文档
  2. blockinfile 模块可以帮助我们在指定的文件中插入”一段文本”,这段文本是被标记过的,也就是,我们在这段文本上做了记号,以便在以后的操作中可以通过”标记”找到这段文本,然后修改或者删除它
  3. 参数
    参数解释
    <path>指定要操作的文件
    block/content指定我们想要操作的那”一段文本”
    marker指定标记.ANSIBLE MANAGED BLOCK(默认);#{mark}test:表示# BEGIN test和# END test
    statepresent(默认):更新;absent:表示从文件中删除对应标记的段落
    insertafterEOF(默认):在末尾插入;使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的前面;如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准
    backup是否备份
    create文件不存在时是否创建
  4. 实例
    1. 在文件末尾添加
    - name: modify source for Chinablockinfile:path: /etc/pacman.d/mirrorlistblock: |#清华大学源Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
    
    1. 在文件开头添加 增加如下
    - name: modify source for Chinablockinfile:path: /etc/pacman.d/mirrorlistinsertbefore: BOFblock: |#清华大学源Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
    
template (根据模板生成文件)
  1. 官方文档

  2. 参数

    参数解释
    src必选,源路径
    dest必选,目标路径
  3. 示例

    - name: Add apache vhosts configuration.template:src: "{{ apache_vhosts_template }}"dest: "{{ apache_conf_path }}/{{ apache_vhosts_filename }}"owner: rootgroup: rootmode: 0644notify: restart apachewhen: apache_create_vhosts | bool
    
包管理
yum (软件包)
  1. 官方说明
  2. 参数
    参数解释
    <name>需要管理的软件包
    statepresent(installed):如果装了就不装,如果没装就安装;latest:安装最新版;absent(removed):删除
    disable_gpg_check禁用公钥gpg验证,默认值是no,即验证
    enablerepo指定临时启用的软件源
    disablerepo指定临时禁用的软件源
  3. 示例
      tasks:- name: install git yum:name: gitstate: present
    
  4. 安装多个软件示例
      tasks:- name: install git httpdyum:name: "git,httpd,fping"state: present
    
  5. 安装多个软件示例2
      tasks:- name: ensure a list of packages installedyum:name: "{{ packages }}"vars:packages:- httpd- httpd-tools
    
package (通用包管理)
  1. 官方说明
  2. 参数
    参数解释
    name必选,软件包名称
    state必选,状态,present,absent,latest
    use可选,默认:auto
  3. 示例
    - name: ensure a list of packages installedpackage:name: "{{ packages }}"state: presentvars:packages:- httpd- httpd-tools- name: install the latest version of Apache and MariaDBpackage:name:- httpd- mariadb-serverstate: latest  
    
pacman (ArchLinux)
  1. 官方说明
  2. 参数
    参数解释
    name软件包名称
    state状态,present,absent,latest
    upgrade是否升级
  3. 示例
    1. pacman -Syu
    - name: Run the equivalent of "pacman -Syu" as a separate steppacman:update_cache: yesupgrade: yes
    
    1. 安装软件包
    - name: install Archlinux packagespacman:name:- sudo- archlinuxcn-keyring- xorg-server 
    
yum_repository (yum仓库)
  1. 参数
    参数解释
    <name>仓库ID
    baseurl仓库的 baseurl
    description注释
    file配置文件名称即.repo的前缀,默认为仓库ID
    enabled是否启用,默认启用
    gpgcheckgpg验证,默认为no即不验证
    gpgcakey指定gpg验证的公钥
    statepresent(默认),absent表示删除
网络安全类
Net Tools 网络工具
get_url (下载文件)
  1. 官方文档

  2. 参数

    参数解释
    dest path必选,将文件下载到的绝对路径,如果dest是目录,则将使用服务器提供的文件名
    url string必选,`HTTP, HTTPS, or FTP URL in the form (http
    backup boolean可选,创建备份文件
    checksum string可选,校验
    force boolean可选,强制覆盖
    group string可选,属组
    owner string可选,属主
    mode string可选,权限码如0644
  3. 示例

    - name: Download file with check (md5)get_url:url: http://example.com/path/file.confdest: /etc/foo.confchecksum: md5:66dffb5228a211e61d6d7ef4a86f5758
    
firewalld (防火墙)
  1. 官方文档
  2. 参数
    参数解释
    state必选,absent,disabled,enabled,present
    interface可选,从一个zone中增加或删除的接口
    immediate可选,默认no,如果设置为永久,应立即应用此配置
    masquerade可选,允许或禁用从一个zones中
    permanent可选,no,yes.
    port可选
    rich_rule可选,富规则
    service可选,
    source可选,
    timeout可选,
    zone可选,
  3. 示例
    - firewalld:port: 161-162/udppermanent: yesstate: enabled
    
Utilities (实用工具)
debug (调试信息)
  1. 官方2.9文档
  2. 参数
    参数解释
    msg string可选,显示定义的信息
    var string
    verbosity int
  3. 示例
    # Example that prints the loopback address and gateway for each host
    - debug:msg: System {{ inventory_hostname }} has uuid {{ ansible_product_uuid }}- debug:msg: System {{ inventory_hostname }} has gateway {{ ansible_default_ipv4.gateway }}
    when: ansible_default_ipv4.gateway is defined# Example that prints return information from the previous task
    - shell: /usr/bin/uptime
    register: result- debug:var: resultverbosity: 2- name: Display all variables/facts known for a hostdebug:var: hostvars[inventory_hostname]verbosity: 4# Example that prints two lines of messages, but only if there is an environment value set
    - debug:msg:- "Provisioning based on YOUR_KEY which is: {{ lookup('env', 'YOUR_KEY') }}"- "These servers were built using the password of '{{ password_used }}'. Please retain this for later use."
    
fail (失败,停止后续)
  1. 官方文档
  2. 参数
    参数解释
    msg string可选,显示定义的信息
  3. 示例
    - name: "fail if Operating System is not CentOS-7.x"fail: msg="Operating System {{ ansible_distribution }}-{{ ansible_distribution_version }} not supported"when: (ansible_distribution != "CentOS" and ansible_distribution != "RedHat") or ansible_distribution_major_version != "7"
    
Source Control modules(源代码控制模块)
git
  1. 官方文档
  2. 参数
    参数解释
    dest必选,目的路径
    repo必选,源地址
  3. 示例
    # Example read-write git checkout from github
    - git:repo: git@github.com:mylogin/hello.gitdest: /home/mylogin/hello
    

playbook示例

lineinfile 替换文件内容
---
- hosts: tempremote_user: rootsudo_user: roottasks:- name:lineinfile:dest: "/etc/pam.d/vsftpd"regexp: 'pam_shells.so'line: '#auth       required     pam_shells.so'backup: yes

Ansible 常见问题

指定客户端Python的位置
  1. 全局设置:修改 ansible.cfg
    interpreter_python = /usr/bin/python3  <<< 在 [defaults] 部分添加选项,指定 Python 解释器
    
  2. 针对设备(组)单独设置:修改 hosts 文件
    ansible_python_interpreter=/usr/bin/python3  <<< 在 [xxx:vars] 部分添加属性,指定 Python 解释器
    
  3. 手工指定:-e 选项
    ansible ASA -m ping -o -e 'ansible_python_interpreter=/usr/bin/python3'
    

相关文章:

自动化_Ansible学习笔记

文章目录 Ansible 介绍配置文件主配置文件优先级 常用命令ansible-playbook ad-hocinventory 主机清单Playbook 剧本YAML格式 ansible 模块介绍模块对应功能Commands modules(命令模块)command (命令)shell (外壳) 官方帮助文档 模块索引playbook 开头示例系统类setup (收集远程…...

用于密集视觉冲击的紧凑三维高斯散射Compact 3D Gaussian Splatting For Dense Visual SLAM

Compact 3D Gaussian Splatting For Dense Visual SLAM 用于密集视觉冲击的紧凑三维高斯散射 Tianchen Deng 邓天辰11Yaohui Chen 陈耀辉11Leyan Zhang 张乐妍11Jianfei Yang 杨健飞22Shenghai Yuan 圣海元22Danwei Wang 王丹伟22Weidong Chen 陈卫东11 Abstract 摘要 …...

ChatGPT揭秘:高效论文写作的秘籍

ChatGPT无限次数:点击直达 ChatGPT揭秘&#xff1a;高效论文写作的秘籍 引言 在当今信息爆炸的时代&#xff0c;高效撰写论文对于研究者和学术工作者至关重要。随着人工智能技术的不断发展&#xff0c;ChatGPT等自然语言处理工具的出现为论文写作提供了全新的思路和工具。本文…...

电脑不能上网,宽带调制解调器出现问题如何处理

目录 一、问题说明 二、解决方案 一、问题说明 内网的设备能互联&#xff0c;内网的各个设备无法连外网。 电脑在检测网络时&#xff0c;出现以下提示&#xff1a; 二、解决方案 首先重启光猫&#xff08;我们是电信宽带&#xff09;。 如果还是有问题&#xff0c;再重启…...

云计算: OVN 集群 部署分布式交换机

目录 一、实验 1.环境 2.OVN 集群 部署云主机 3.中心端添加DVS分布式大二层交换机 二、问题 1.南向控制器查看主机名只显示localhost 2.中心端如何添加DVR分布式⼤三层路由器 一、实验 1.环境 (1) 主机 表1 宿主机 主机架构软件主要服务IP备注ovn_central中心端 ovn…...

electron+Vue3构建桌面应用之IPC通讯

最近在做一个C/S架构的项目预研 过程中遇到 Electron 与 Vue3 通讯的问题&#xff0c;费劲巴力的在网上找方案&#xff0c;发现都不理想&#xff0c;最终攻克之后&#xff0c;计划将过程写下来&#xff0c;供有需求的同学白嫖&#xff01; 开始之前&#xff0c;先说一件重要的…...

html球体涨水

简单 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>div…...

ubuntu手动编译opencv 4.9.0遇到的问题汇总

ubuntu手动编译opencv 4.9.0遇到的问题汇总 编译流程 以4.9.0版本为例&#xff0c;可参考&#xff1a;https://docs.opencv.org/4.9.0/d2/de6/tutorial_py_setup_in_ubuntu.html 编译加速 https://blog.csdn.net/tfb760/article/details/104030841 ippicv_2021.10.0_lnx_i…...

SEO之搜索引擎的工作原理(三)

初创企业需要建站的朋友看这篇文章&#xff0c;谢谢支持&#xff1a;我给不会敲代码又想搭建网站的人建议 &#xff08;接上一篇。。。&#xff09; 排名 经过搜索引擎蜘蛛抓取页面&#xff0c;索引程序计算得到倒排索引后&#xff0c;搜索引擎就准备好可以随时处理用户搜索了…...

开发语言漫谈-python

python的语法和C完全不同&#xff0c;但是它也是C写的。也就是想成为高手&#xff0c;C是必备武功。不是每个人都想成为武林高手。所以客观上需要个简单上手开发效率高的语言&#xff0c;就这样python诞生了。python的发明人其实不喜欢蟒蛇&#xff0c;但是不知道为啥选这个名字…...

JVM指令收集

1. 栈和局部变量操作 1.1 将常量压入栈的指令aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 iconst_3 将int类型常量3压入栈 iconst_4 将int类型常量4压入…...

小程序解析二维码:jsQR

1.了解jsQR jsQR是一个纯javascript脚本实现的二维码识别库&#xff0c;不仅可以在浏览器端使用&#xff0c;而且支持后端node.js环境。jsQR使用较为简单&#xff0c;有着不错的识别率。 2.效果图 3.二维码 4.下载jsqr包 npm i -d jsqr5.代码 <!-- index.wxml --> &l…...

【verilog 设计】 reg有没有必要全部赋初值?

一、前言 在知乎发现“reg有没有必要全部赋初值”这个问题&#xff0c;与自己近期对Verilog reg的进一步学习相契合&#xff0c;此文对这个问题进行总结。 二、reg的初值赋值方式 就语法意义赋初值而言&#xff0c;就是在声明reg时对其赋值。在工程中&#xff0c;对于数字系…...

NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估

目录 一、说明 二、Deepset SQUAD是个啥&#xff1f; 三、问答系统&#xff08;QA系统&#xff09;&#xff0c;QA系统在各行业的应用及基本原理 3.1 医疗 3.2 金融 3.3 顾客服务 3.4 教育 3.5 制造业 3.6 法律 3.7 媒体 3.8 政府 四、在不同行业使用QA系统的基本原理 五、关于…...

php开发中如何防止抓包工具伪造请求

要防止抓包工具伪造请求&#xff0c;采取一系列的技术和策略来增强应用程序的安全性。以下是一些关键步骤和最佳实践&#xff1a; 1. 使用HTTPS 确保应用程序使用HTTPS协议进行通信。HTTPS通过TLS/SSL加密客户端和服务器之间的数据传输&#xff0c;这使得抓包工具捕获到的数据…...

密码学 | 椭圆曲线数字签名方法 ECDSA(下)

目录 10 ECDSA 算法 11 创建签名 12 验证签名 13 ECDSA 的安全性 14 随机 k 值的重要性 15 结语 ⚠️ 原文&#xff1a;Understanding How ECDSA Protects Your Data. ⚠️ 写在前面&#xff1a;本文属于搬运博客&#xff0c;自己留着学习。同时&#xff0c;经过几…...

拟态个人主页UI源码

拟态个人主页 效果图源代码领取源码 效果图 PC端 移动端 源代码 index.php <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>孤客 |佩恩</title><meta name"keywords" co…...

移动硬盘无法打开?别慌!这里有救星!

移动硬盘作为现代生活中重要的数据存储工具&#xff0c;承载着我们大量的文件和数据。然而&#xff0c;有时我们会遇到移动硬盘无法打开的情况&#xff0c;这往往让人焦虑不已。那么&#xff0c;当移动硬盘无法打开时&#xff0c;我们应该如何应对呢&#xff1f; 移动硬盘无法打…...

windows下已经创建好了虚拟环境,但是切换不了的解决方法

用得多Ubuntu&#xff0c;今天用Windows重新更新anaconda出问题&#xff0c;重新安装之后&#xff0c;打开pycharm发现打开终端之后&#xff0c;刚开始是ps的状态&#xff0c;后面试了网上改cmd的方法&#xff0c;终端变成c盘开头了 切换到虚拟环境如下&#xff1a;目前的shell…...

Java反序列化基础-类的动态加载

类加载器&双亲委派 什么是类加载器 类加载器是一个负责加载器类的对象&#xff0c;用于实现类加载的过程中的加载这一步。每个Java类都有一个引用指向加载它的ClassLoader。而数组类是由JVM直接生成的&#xff08;数组类没有对应的二进制字节流&#xff09; 类加载器有哪…...

课堂行为动作识别数据集

一共8884张图片 xml .txt格式都有 Yolo可直接训练 已跑通 动作类别一共8类。 全部为教室监控真实照片&#xff0c;没有网络爬虫滥竽充数的图片&#xff0c;可直接用来训练。以上图片均一一手工标注&#xff0c;标签格式为VOC格式。适用于YOLO算法、SSD算法等各种目标检测算法…...

【数据库】MVCC

MVCC是一种用来解决读写冲突的无锁并发控制&#xff0c;也就是为事务分配单项增长的时间戳&#xff0c;为每个修改保存一个版本&#xff0c;版本与事务时间戳关联&#xff0c;读操作只读该事务开始前的数据库的快照 MVCC&#xff0c;全称Multi-Version Concurrency Control&am…...

快速排序题目SelectK问题

力扣75.颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sor…...

es6解构赋值

ES6解构赋值是一种简洁的为变量赋值的方式&#xff0c;它允许我们从数组或对象中提取值并赋给对应的变量。 解构赋值在ES6中被引入&#xff0c;主要目的是为了简化代码&#xff0c;提高代码的可读性。以下是解构赋值的基本用法&#xff1a; 数组解构&#xff1a;当我们需要从数…...

Jenkins上面使用pnpm打包

问题 前端也想用Jenkins的CI/CD工作流。 步骤 Jenkins安装NodeJS插件 安装完成&#xff0c;记得重启Jenkins。 全局配置nodejs Jenksinfile pipeline {agent anytools {nodejs "18.15.0"}stages {stage(Check tool version) {steps {sh node -vnpm -vnpm config…...

设计编程网站集:动物,昆虫,蚂蚁养殖笔记

入门指南 区分白蚁与蚂蚁 日常生活中&#xff0c;人们常常会把白蚁与蚂蚁搞混淆&#xff0c;其实这两者是有很大区别的&#xff0c;养殖方式差别也很大。白蚁主要食用木质纤维&#xff0c;会给家庭房屋带来较大危害&#xff0c;而蚂蚁主要采食甜食和蛋白质类食物&#xff0c;不…...

面经学习(众智宏图实习)

个人评价 难度还是有的&#xff0c;中等难度吧&#xff0c;可能是因为项目使用的是物流项目&#xff0c;该项目本来就比较庞大难度比较高&#xff0c;流的八股文我真的是一点不会&#xff0c;还需要加强&#xff0c;reidis的多路io复用模型没有深问&#xff0c;要是问了就寄了&…...

DataGrip2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 DataGrip是由JetBrains公司开发的一款强大的关系数据库集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为数据库开发人员和数据库管理员设计。它提供了一个统一的界面&#xff0c;用于管理和开发各种关系型数据库&#x…...

【InternLM 实战营第二期-笔记4】XTuner 微调个人小助手认知

书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型,很高兴能参与本次第二期训练营&#xff0c;我也将会通过笔记博客的方式记录学习的过程与遇到的问题&#xff0c;并为代码添加注释&#xff0c;希望可以帮助到你们。 记得点赞哟(๑ゝω╹๑) XTuner 微调个人小助手…...

<计算机网络自顶向下> CDN

视频服务挑战 规模性异构性&#xff1a;不同用户有不同的能力&#xff08;比如有线接入和移动用户&#xff1b;贷款丰富和受限用户&#xff09;解决方法是&#xff1a;分布式的应用层面的基础设施CDN 多媒体&#xff1a;视频 视频是固定速度显示的一系列图像的序列&#xff…...

网站建设 上海网站建设/设计网站排行

问题描述 利用 XShell 登录远程 Unix 服务器&#xff0c;启动后台进程&#xff0c;如下所示。 $ command & 当关闭 XShell 后&#xff0c;后台进程就会一起终止。 问题原因 在查看 Bash 的使用手册后&#xff0c;发现如下一段描述&#xff1a; The shell exits by de…...

政府手机网站建设方案/品牌营销策划案例

中位数 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;2描述一组数据按从小到大的顺序依次排列&#xff0c;处在中间位置的一个数叫做中位数。 比如 1 5 10 11 9 其中位数就是9.因为排序过后&#xff0c;9处在中间位置。 现在给你一些数&…...

wordpress 不显示分页/中国新冠疫苗接种率

1.背景在项目的执行过程中&#xff0c;发现串口通讯虽然不如Profinet方便&#xff0c;但是远比4-20mA或者0-10V的硬接线方便很多&#xff0c;而且在仪表类使用广泛。学会串口通讯&#xff0c;可以在设备不支持以太网通讯的情况下实现数据读取&#xff08;比如西门子和第三方驱动…...

wordpress不同页面布局/如何在百度推广自己

VC2010的安装和使用VC2010简介从2018年3月开始全国二级C语言和二级C语言的开发环境从VC6.0更换为Microsoft VC2010。而VC2010的使用和 VC6.0 差别很大&#xff0c;大多数人不会使用&#xff0c;也找不到合适的安装包。VC2010的安装首先准备安装连接点击下载安装VC2010注册VC201…...

做视频投稿赚钱的网站/百度快照网址

这两年被Python初学小白问到最多的问题就是&#xff0c;该用什么代码编辑工具&#xff1f; 说实话&#xff0c;我个人是用Jupyter Notebook最多&#xff0c;主要是经常做数据可视化&#xff0c;方便些。 但对于初学者来说&#xff0c;PyCharm仍是不二的选择&#xff0c;甚至我…...

质量好网站建设费用/网站推广软件免费版大全

命令&#xff1a;help 描述&#xff1a;help 命令&#xff08;shell内置命令&#xff09;。可以查看shell内置命令的帮助文档。 范例&#xff1a;help if...