做网站挣钱吗现在wordpress qq登陆评论
news/
2025/9/28 13:56:58/
文章来源:
做网站挣钱吗现在,wordpress qq登陆评论,wordpress做企业官网好不好,河北招投标信息服务平台Chapter Ⅰ 介绍Ansible ansible ansible是一款开源自动化平台 ansible围绕一种无代理架构构建#xff0c;在控制节点上安装ansible#xff0c;且客户端不需要任何特殊的代理软件#xff1b;ansible使用SSH等标准协议连接受管主机#xff0c;并在受管主机上运行代码或命令来…Chapter Ⅰ 介绍Ansible ansible ansible是一款开源自动化平台 ansible围绕一种无代理架构构建在控制节点上安装ansible且客户端不需要任何特殊的代理软件ansible使用SSH等标准协议连接受管主机并在受管主机上运行代码或命令来确保他们处于ansible指定的状态
Ansible帮助 1、官方网站https://docs.ansible.com/ansible/2.8/modules/modules_by_category.html 2、ansible-doc 模块名称
Chapter Ⅱ 部署Ansible
类别文件说明配置文件ansible.cfg通过哪个账号、登录方式用户名密码/密钥、提权管理清单inventory管理设备的清单列表支持分组运行脚本playbookansible的语法、具体执行任务脚本
1、配置文件 三种配置文件
配置文件所在路径优先级ansible.cfg当前目录高~/.ansible.cfg家目录次高/etc/ansible/ansible.cfg全局配置目录低
# some basic default values...
[defaults]
# 指定清单文件
inventory /home/student/ansible/inventory
# 登录是否需要输入密码因为已经在sshd中设置密钥登录所以此处可以设置为False
ask_pass False
# 指定登录到被管主机的账号
remote_user devops[privilege_escalation]
# 是否可以切换高权限账号
becomeTrue
# 切换的方式采用sudo
become_methodsudo
# 切换到什么账号
become_userroot
# 切换时是否需要密码
become_ask_passFalse注提权sudo等相关配置在/etc/sudoers中配置
2、管理清单 清单定义Ansible将要管理的一批主机。这些主机也可以分配到组中以进行集中管理。组可以包含子组主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量。 验证inventory ansible 主机名或组名 --list-hosts或者直接用all也可以 3、运行临时命令 Ansible有两种方式运行临时运行单词命令行和脚本运行playbook
ansible host-pattern -m moudule [-a module arguments] [-i inventory]
Ansible模块
模块类别模块文件模块▪ copy将本地文件复制到受管主机▪ file设置文件的权限和其他属性如创建、删除等▪ lineinfile确保特定行是否在文件中▪ synchronize使用rsync同步内容软件包模块▪ package使用操作系统本机的自动监测软件包管理器管理软件包▪ yum使用YUM软件包管理器管理软件包▪ apt使用APT软件包管理器管理软件包▪ dnf使用DNF软件包管理器管理软件包▪ gem管理Ruby gem▪ pip从PyPI管理Python软件包系统模块▪ firewalld使用firewalld管理任意端口和服务▪ reboot重启计算机▪ service管理服务▪ user添加、删除和管理用户账户Net Tools模块▪ get_url通过HTTP、HTTPS或FTP下载文件▪ nmcli管理网络▪ uri与web服务交互
在受管主机上运行任意命令 command模块允许管理员在受管主机的命令行中运行任意命令要运行的命令通过-a选项指定为该模块的参数
Chapter Ⅲ 实施PLAYBOOK
1、规范 Playbook是以YAML格式编写的文本文件通常使用扩展名yml或yaml保存。Playbook使用空格字符缩进来表示其数据结构。 - 处于层次结构中同一级别的数据元素必须具有相同的缩进量 - 如果项目属于其他项目的子项其缩进量必须大于父项
YAML语法规则 - 大小写敏感 - 使用缩进量表示层级关系 - 缩进时不允许使用tab键只可以使用空格 - 缩进时空格数量不重要只要相同元素左侧对齐表示这些元素属于同一个层级 - #表示当行注释 - 字符串可以不用引号标注但建议加上引号便于理解和阅读
Playbook开头的一行由三个破折号—组成标记文档开始末尾可能使用三个圆点…实际中通常会省略首末标记位之间会以play列表的形式定义playbookYAML列表中的项目以一个破折号加空格开头。
---
- name: install and start httphosts: intranetwebvars:tasks:- name: install httpyum:name: httpdstate: present- name: start httpservice:name: httpdstate: startedenabled: true2、语法检查 ansible-playbook --syntax-check test.yaml
3、显示详细信息verbose ansible-playbook -vvv test.yaml
选项描述-v显示任务结果-vv任务结果和任务配置都会显示-vvv包含关于与受管主机连接的信息-vvvv增加了连接插件相关的额外详细程度选项包括受管主机上用于执行脚本的用户以及所执行的脚本
4、模拟仿真空运行 ansible-playbook -C test.yaml 返回结果但不会真的到受管主机上执行
Ansible模块维护 用ansible-doc查询模块时需要注意维护属性有些非商用的模块有可能后期会下线尽量使用stableinterface和core的模块 1、status开发状态 - stableinterface模块的关键字稳定将尽力确保不删除关键字或更改其含义 - preview模块处于技术预览阶段可能不稳定其关键字可能会更改或者可能需要本身受到不兼容更改的库或web服务 - deprecated模块已被弃用未来某一发行版中将不再提供 - removed模块已从发行版中移除但因文档需要存根以帮助之前的用户迁移到新的模块 2、supported_by维护人 - core由上游“核心”Ansible开发人员维护始终随Ansible提供 - curated模块由社区中的合作伙伴或公司提交并维护 community模块不受到核心上游开发人员、合作伙伴或公司的支持完全由一般开源社区维护
Chapter Ⅳ 管理变量和事实
https://docs.ansible.com/ansible/2.8/user_guide/playbooks_variables.html
命名变量变量的名称必须以字母开头并且只能含有字母、数字和下划线 1、全局范围变量从命令行或Ansible配置设置的变量 2、Play范围变量在play和相关结构中设置的变量 3、主机范围变量由清单、事实收集或注册的任务在主机组和个别主机上设置的变量 优先级123不同级别定义相同变量采用优先级最高的变量即低优先级会被高优先级覆盖 注清单中的变量优先级小于playbook中的变量一般在其中定义与playbook相同的变量作用是防止playbook未定义变量导致执行错误
变量的使用
双花括号以变量开始的时候必须加“即”{{ var }}建议都加在when语句中调用变量不能加{{}}
变量数组 如下代码可以转换为名为users的数组
user1_first_name: Bob
user1_last_name: Jones
user1_home_dir: /users/bjones
user2_first_name: Anne
user2_last_name: Cook
user2_home_dir: /users/acookusers:bjones:first_name: Boblast_name: Joneshome_dir: /users/bjonesacook:first_name: Annelast_name: Cookhome_dir: /users/acook可以用如下两种形式访问数据
# Returns Bob
users.bjones.first_name# Returns /users/acook
users.acook.home_dir# Returns Bob
users[bjones][first_name]# Returns /users/acook
users[accok][home_dir]模块debug 在调试的时候使用相当于打印 var取变量值打印
使用目录填充主机和组变量 根据被管主机或组进行分别定义的变量 目录group_hosts、hosts_group的名字必须这么写不能改 文件名必须和Inventory中定义的主机相同 实验servera归属groupAserverB归属groupB其中groupA安装ntpd、groupB安装httpd、servera添加用户devops、serverb添加用户student
---
- name:hosts: groupA, groupBvars:ignore_errors: yestasks:- name: group: install softwareyum:name: {{ package }}state: present- name: hosts: add useruser:name: {{ user_name }}注册变量register register变量可以临时保存本模块执行后的结果一般用在判断关系中决定后续语句如何执行 示例在servera上安装httpd通过结果判断是否已经预先安装第一个显示全部结果信息第二个只显示msg字段信息
---
- name: test httpd is installedhosts: servera.lab.example.comvars:tasks:- name: install httpdyum:name: httpdstate: presentregister: result_install- name: display resultdebug:var: result_install- name: display simple resultdebug:var: result_install[msg]facts变量 Ansible执行YAML前会去被管主机上采集信息并通过json格式存储在内存中。Gathering Facts 目的做环境状态的判断 可以收集IP地址、硬件信息CPU、内存、BIOS、磁盘等、分区信息 也可以在被管主机上自定义facts变量
1、facts采集是默认开启的但会比较耗时如果需要关闭添加gather_facts: no
---
- name:hosts: groupA, groupBvars:gather_facts: no2、支持采集的变量 使用ansible serverb.lab.example.com -m setup获取 常用的变量IP地址、主机名完全解析域名FQDN、短主机名等
3、调用变量
ANSIBLE_FACTS形式旧FACTS变量形式ansible_facts[‘hostname’]ansible_hostnameansible_facts[‘fqdn’]ansible_fqdnansible_facts[‘default_ipv4’][‘address’]ansible_default_ipv4[‘address’]ansible_facts[‘interfaces’]ansible_interfacesansible_facts[‘devices’][‘vda’][‘partitions’][‘vda1’][‘size’]ansible_devices[‘vda’][‘partitions’][‘vda1’][‘size’]
注尽量选择新形式
---
- name: display factshosts: intranetwebvars:tasks:- name: IP address, netmask and gatewaydebug:var: ansible_facts[default_ipv4][address], ansible_facts[default_ipv4][netmask], ansible_facts[default_ipv4][gateway]- name: fqdn and hostnamedebug:var: ansible_facts[fqdn], ansible_facts[hostname]- name: virtual groupsdebug:var: ansible_facts[lvm][vgs]- name: memory usagedebug:var: ansible_facts[memory_mb][real][total], ansible_facts[memory_mb][real][used]魔法变量magic variable
hostvars 包含受管主机的变量可以用于获取另外一台受管主机的变量的值 hostvar[‘serverb.lab.example.com’][‘ansible_facts’][‘hostname’]group_names组 了出当前受管主机所属的所有组groups组主机 列出清单中的所有组和主机inventory_hostname主机 包含清单中配置的当前受管主机的主机名称。Inventory中的主机名可能与实际取到的主机名不同
实验把serverb主机名和IP写入到servera的/etc/hosts中
---
- name: testhosts: servera.lab.example.com, serverb.lab.example.comvars:tasks:- name: modify /etc/hostscopy:content: {{ hostvars[serverb.lab.example.com][ansible_facts][hostname] }} {{ hostvars[serverb.lab.example.com][ansible_facts][default_ipv4][address]dest: /etc/hostsyaml文件加密 ansible-vault
选项作用create新建一个加密文件encrypt在现有文件上加密decrypt去加密edit编辑加密文件rekey重新生成密码view查看加密文件
加密后在用普通的cat/more指令查看yaml为文件显示的是加密后内容 ansible-playbook --ask-pass来调用加密的yaml文件 ansible-playbook --vault-password-file用来指定解密的密码文件不用每次都输入密码
Chapter Ⅴ 实施任务控制
Ansible模块设计具有幂等性执行多次的影响与执行一次的影响相同
- 循环任务loopitem loop关键字添加到任务中将应对其迭代任务的项目列表取为值循环变量item保存每个迭代过程中使用的值。 老版本中用with_items等作为循环在现有版本中已废弃 三种安装软件包的写法 loop的循环是一次次的遍历变量的取值每次遍历列表中的一个值
- 判断任务when 和loop的item变量组合在when内部可以调用 1、进行字符的内容判断 2、is或is not用于定义好的值succeed、defined等 3、in 包含
示例
vars:var1:- php- mariadb- httpd
tasks:- name:yum:name: {{ item }}state:presentloop: {{ var1 }}when:- inventory_hostname in groups[dev]- item php操作示例等于值为字符串ansible_machine “x86_64”等于值为数字max_memory 512小于min_memory 128大于min_memory 256小于等于min_memory 256大于等于min_memory 512不等于min_memory ! 512变量存在min_memory is defined变量不存在min_memory is not defined布尔变量是truememory_available布尔变量是falsenot memory_available第一个变量的值存在作为第二个变量的列表中的值ansible_distribution in supported_distors
或操作
when: ansible_facts[distribution] RedHat or ansible_facts[distribution] Fedora与操作
when: ansible_facts[distribution] Redhat and ansible_facts[distribution] Fedora
when:- ansible_facts[distribution] ansible_facts[distribution] RedHat- ansible_facts[distribution] Fedora与或同有使用大于符号长条件在playbook中可分成多行便于阅读
when: ( ansible_facts[distribution] RedHat and ansible_facts[distribution][major_version] 7 )or( ansible_facts[distribution] Fedora andansible_facts[distribution][major_version] 28 )when和loop结合使用的实际案例
- name: install mariadb-server if enough space on rootyum:name: mariadb-serverstate: latestloop: {{ ansible_mounts }}when: item.mount / and item.size_available 300000000实验 1、Install Packages create a playbook called /home/student/ansible/package.yml that: install the php and mariadb packages on hosts in the “dev”, “test”, and “prod” host groups install the “Development Tools” packages group on hosts in the “dev” host group updates all packages to the latest version on hosts in the “dev” host group
---
- name: install softwarehosts: allgather_facts: yesvars:var1:- pack: phpgrp: dev- pack: mariadbgrp: dev- pack: phpgrp: test- pack: phpgrp: prod- pack: mariadbgrp: prod- pack: Development_Toolsgrp: devvar2:- gg: devtasks:- name: install php and mariadb on dev, test, prod/ install Development_Tools on devyum:name: {{ item.pack }}state: presentloop: {{ var1 }}when:- inventory_hostname in groups[ item.grp | string ]- name: Upgrade all packages on devyum:name: *state: latestloop: {{ var2 }}when:- inventory_hostname in groups[ item.gg | string ]2、Modify file content Create a playbook called /home/student/ansible/issue.yml as follows: The playbook runs on all inventory hosts The playbook replaces the contents of /etc/issue with a single line of text as follows: On hosts in the “dev” host group, the line reads: Development On hosts in the “test” host group, the line reads: Test On hosts in the “prod” host group, the line reads: Production
---
- name:hosts: allgather_facts: yesignore_errors: yesvars:var1:- group1: devissue1: Development- group2: testissue2: Test- group3: prodissue3: Productiontasks:- name:copy:content: {{ item.issue1 }}dest: /etc/issuewhen:- inventory_hostname in groups[ item.group1 | string ]loop: {{ var1 }}3、Create and use a logical volume Create a playbook called /home/student/ansible/lv.yml that runs on node1, node2, node3 and node4 that does the follows: Create a logical volume with these requirements: The logical volume is created in the “research” volume group The logical volume name is “data” The logical volume size is 1500 MiB Formats the logical volume with the ext4 filesystem Mounts the filesystem persistently at /data on hosts in the “qa” host group ONLY If the requested logical volume size “cannot be created” the error message “Could not create logical volume of that size” should be displayed and the size 800 MiB should be used instead If the volume group research “does not exist”, the error message “Volume group does not exist” should be displayed.
处理程序 处理程序可视为非活动任务只有在使用notify语句调用时才会被触发。 notifyhandlers 注 1、handlers与tasks处于一个层次 2、notify后面是标记并非变量 3、notify和handlers一一对应通告notify定义handlers的name进行管理并调用 4、notify默认不会立即调用handlers需要task全部执行结束后handlers才会开始执行如果需要立即触发之前所有的handlers需要使用meta模块 实验在tasks中调用变量创建相应的文件夹及文件然后通过处理程序写入内容
---
- name:hosts: devvars:var1:- my_dir: dir1my_file: file1my_content: This is file1- my_dir: dir2my_file: file2my_content: This is file2tasks:- name: Create directoryfile:path: /home/devops/{{ item[my_dir] }}state: directorymode: 0755loop: {{ var1 }}- name: Create files in directoryfile:path: /home/devops/{{ item[my_dir] }}/{{ item[my_file] }}state: touchmode: 0766loop: {{ var1 }]notify:- Add content into the file- Resultshandlers:- name: Add content into the filecopy:content: {{ item[my_content] }}dest: /home/devops/{{ item[my_dir] }}/{{ item[my_file] }}loop: {{ var1 }}- name: Resultsdebug:msg: All work is done实验安装httpd程序并通过处理程序启动、重启、停止
---
- name: install, start and restart httpdhosts: testgather_facts: novars:my_service:- httpdtasks:- name: install httpdyum:name: {{ item }}state: presentloop: {{ my_service }}notify:- start httpd now- restart httpd now- stop httpd nowhandlers:- name: start httpd nowservice:name: httpdstate: started- name: restart httpd nowservice:name: httpdstate: restarted- name: stop httpd nowservice:name: httpdstate: stoppedchanged_when 使用register变量获取执行结果可以取到不同的值然后根据需要通过changed_when和notify进行后续操作
实验如果进入目录成功则打印msg changed_when: command_result.changed相当于判断条件changed为true也可以针对字符型的变量用包含等比如重启某进程等
---
- name:hosts: devgather_facts: noignore_errors: yesvars:tasks:- name:shell:cmd: cd /home/devops/dir1register: command_resultchanged_when: command_result.changednotify:- reuslt printhandlers:- name: result printdebug:msg: Command executing success! register变量获取的值如下 Ansible的块和错误处理 ▪ block要运行的重要任务 ▪ rescue要在block中的任务失败时运行的任务 ▪ always始终独立运行的任务无论block和rescue中的任务是成功还是失败 可用于比如在block中定义更新httpd软件在rescue中定义回退httpd然后在always中定义重启httpd服务
实验在node1的sda上创建一个10G的分区如果创建失败改为创建4G大小的分区无论哪种都格式化为ext4文件系统并挂载到/mnt/ext4上
---
- name: CREATE PARTITION AND MAKE FILESYSTEMhosts: node1vars:tasks:- name: CREATE PARTITION AND MAKE FILESYSTEMblock:- name: CREATE 10GB PARTITIONparted:device: /dev/sdanumber: 2state: presentpart_start: 10GiBpart_end: 20GiBrescue:- name: CREATE 4GB PARTITIONparted:device: /dev/sdanumber: 2state: presentpart_start: 10GiBpart_end: 14GiBalways:- name: MAKE FILESYSTEM EXT4filesystem:fstype: ext4dev: /dev/sda2- name: CREATE DIRECTORYfile:path: /mnt/ext4state: directory- name: MOUNT FILESYSTEMmount:path: /mnt/ext4src: /dev/sda2fstype: ext4state: mounted如果不会用控制任务可以在/user/shar/ansible/roles下grep -r when/loop .来查询相关的示例
修改的地方离代码执行区域越远越安全最远的是文件所以把部分变量等写在文件中在修改时最不易出错
Chapter Ⅵ 在被管理节点上创建文件或目录
对文件或目录的常用操作
模块说明copy从本地到被管机的操作对单个文件也可以讲内容复制到文件中覆盖Synchronize支持文件和目录的上传和下载围绕指令rsync需安装rsyncfetch与copy相反相当于下载lineinfile修改文件内容regexp匹配的对象line替换的内容regexpinsertbefore或regexpinsertafterregexp匹配到时正常执行line的内容未匹配到时按照insert的匹配要求在前或后一行插入line的内容
示例修改apache端口为82
---
- name:hosts: allvars:tasks:- name: MODIFY APACHE PORTlineinfile:path: /etc/httpd/conf/httpd.confregex: ^#Listen 80insertafter: ^#Listen 12.34.56.78:80line: Listen 82示例 delegate_to: servera 指定执行的主机就算servera未在hosts中定义也可以执行且只在该主机上执行
---
- name:hosts: node1, node2vars: tasks:- name: INSTALL APACHEyum:name: httpdstate: presentdelegate_to: node3JINJA2模板 ○ 优势 1、动态的引用变量 2、可以使用条件、循环语句
非常适合于做复杂的配置文件初始化
○ JINJA2语法规则 1、变量的使用 {{ }} 2、判断、循环的使用 {% %}
{% if %}
{% endif %}{% for %}
{% endfor %}3、注释的使用 {# #}
Chapter Ⅶ 管理大项目
ansible towerweb页面形式管理ansible适用于大型项目管理 tower是付费的免费版的是awx搭建很麻烦需要很多组件
INVENTORY配置 一、静态配置 三种写法 a、[]方式
mail.example.com[webservers]
foo.example.com
bar.example.com[dbservers]
one.example.com
two.example.com
three.example.comb、等式写法
hostname devserverac、JSON格式
all:hosts:mail.example.com:children:webservers:foo.example.com:bar.example.com:dbservers:one.example.com:two.example.com:three.example.com:在编写inventory时候可以使用通配符等方式 1、通配符
匹配所有 [] 区间
2、逻辑关系 或用: ansible web1:web2 -m ping 非用! webservers: !node3 与用 webservers: node3 3、正则独立语法 开始表示正则匹配 ansible ~(beta|web|green).example.(com|org) -m ping 监测beta.example.com、web.example.com、green.example.com、beta.example.org、web.example.org、green.example.org主机的存活
ansible ~192.168.[0-9]{2}.[0-9]{2,} -m ping 监测所有以192.168开头的主机存活
二、动态配置 使用python作为中间层获取、处理数据需要有Python基础 在使用YAML时通过-i参数调用对应的python程序 ansible-playbook -I colletc.py test.yaml
ansible并发数 修改ansible.cfg中的fork默认值为5 #forks 5 一个fork一般会占用10-100MB的内存
滚动更新分组执行 https://docs.ansible.com/ansible/2.8/user_guide/playbooks_delegation.html#rolling-update-batch-size 将主机进行分组每次以分组为单位进行执行
例如10台机器forks 1010台并发serial 2执行顺序为2、2、1
固定模式
- name: testhosts: allserial: 2比率模式
- name: testhosts: allserial: 30%阶梯模式
- name: testhosts: allserial:- 1- 5- 10- name: testhosts: allserial:- 10%- 20%- 100%- name: testhosts: allserial:- 1- 5- 20%通过最大失败率来控制任务什么时候停止 max_fail_percentage: 30
导入playbook
playbook分级 1、导入playbook可以用import和include后续不再使用
importinclude静态在playbook被加载的时候就被展开预处理动态在playbook运行时才被展开实时处理被导入的文件名不能使用动态变量替换被导入的文件名可以使用任何变量替换当对“import_tasks使用when判断时when对应的条件会应用于被导入的文件中每一个任务当对“include_tasks使用when判断时when对应的条件只会应用于“include_tasks”任务本身
2、roles类似于一个个小的项目独立性更好推荐优先使用
变量 分类管理 { h o s t − v a r s g r o u p s − v a r s \left\{ \begin{matrix} host-vars \\ groups-vars \end{matrix} \right. {host−varsgroups−vars
Chapter Ⅷ 利用角色简化Playbook
https://galaxy.ansible.com
1、从网上下载ansible-galaxy install 安装时可以使用-p参数指定安装位置如果不过指定则由ansible.cfg中roles_path配置的内容作为默认位置 roles_path可以通过冒号分隔配置多个值默认取第一个
/usr/share/ansible/roles系统预设值的角色yum install rhel-system-roles /etc/ansible/roles安装ansbile时所带
ansible-galaxy list 查看可使用的roles
2、自己编写roleansible-galaxy init 外部yml调用的入口文件时tasks/main.ymlmain.yml调用var、template的时候会自动去文件夹下寻找 vars/main.yml是自定义的变量 defaults/main.yml是自定义找不到的时候定义的变量
Ansible角色子目录
子目录功能defaults变量的默认值优先级低会被其他覆盖files静态文件handlers处理程序定义meta一般写作者、许可证、平台等信息tasks主文件templatesJinja2模板文件tests包含inventory和test.yml用于测试vars变量值
roles的几种调用方法 1、role方式
roles:- role: apacheroles: - { role: foo, when: hostvars[ansible_hostname] }2、列表方式
roles: - common- webserversRHEL系统角色
名称状态角色描述rhel-system-roles.kdump全面支持配置kdump崩溃恢复服务rhel-system-roles.network全面支持配置网络接口rhel-system-roles.selinux全面支持配置和管理SELinux自定义包括SELinux模式、文件和端口上下文、布尔值设置以及SELinux用户rhel-system-roles.timesync全面支持使用网络时间协议或精确时间协议配置时间同步rhel-system-roles.postfix技术预览使用Postfix服务将每个主机配置为邮件传输代理rhel-system-roles.firewall开发中配置主机的防火墙rhel-system-roles.tuned开发中配置tuned服务以调优系统性能
tasks和roles一起使用配置NTP时钟系统角色及时区模块
- name: Time Synchronization Playhosts: serversvars:timesync_ntp_servers:- hostname: 0.rhel.pool.ntp.orgiburst: yes- hostname: 1.rhel.pool.ntp.orgiburst: yes- hostname: 2.rhel.pool.ntp.orgiburst: yestimezone: UTCroles:- rhel-system-roles.timesynctasks:- name: Set timezonetimezone:name: {{ timezone }}Chapter Ⅸ 对Ansible进行故障排除
【排错工具】 1、自带工具 语法检查 ansible-playbook --syntax-check 模拟执行 ansible-playbook --check/-C 打印详细 ansible-playbook -vvv 单步执行 ansible-playbook --step 指定执行 ansible-playbook --start-at-task从指定的模块开始执行
2、三方工具推荐 ansible-lint yamllint
https://ansible-lint.readthedocs.io/en/latest/ pip3 install ansible-lint
打开日志 ansible.cfg
Chapter Ⅹ 自动执行Linux管理任务
yum模块 s t a t e { p r e s e n t 安装 l a t e s t 更新 state\left\{ \begin{matrix} present安装 \\ latest更新 \end{matrix} \right. state{present安装latest更新
导入gpgkeyrpm_key和yum_repository
- name: Deoploy the GPG public key By rpm_keyrpm_key:key: http://materials.example.com/yum/repository/RPM-GPG-KEY-examplestate: present
- name: Deoploy the GPG public key By yum_repositoryyum_repository:name: example-interneldescription: Example Inc.Internal YUM repobaseurl: http://materials.example.com/yum/repository/gpgkey: http://materials.example.com/yum/repository/RPM-GPG-KEY-exampleenabled: yesgpgcheck: yesknown_hosts模块 允许在被管主机上的known_hosts文件中添加或删除主机密钥
- name: copy host keys to remote serversknown_hosts:path: /etc/ssh/ssh_known_hostsname: user1key: {{ lookup(file, pubkeys/user1) }}authorized_key模块 允许为各个用户账户添加或删除SSH授权密钥
- name: Set authorized keyauthorized_key:user: user1state: presentkey: {{ lookup(file, /home/user1/.ssh/id_rsa.pub) }}parted模块
参数名称描述align配置分区对齐device块设备flags分区的标志number分区编号part_start分区开始位置part_end以parted支持单位指定的从磁盘开头开始的分区大小state创建或删除分区unit分区信息的大小单位
mount模块 state
present只修改fstab文件但不触发挂载行为mounted既修改fstab文件同时立刻触发挂载行为
nmcli模块
参数名称描述conn_name配置连接名称autoconnect启用在引导时自动激活连接dns4配置IPv4的DNS服务器最多3个gw4配置IPv4网关ifname要绑定到连接的接口ip4接口的IPv4地址state启用或禁用该网络接口type设备或网络连接的类型
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920707.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!