Ansible---playbook剧本
目录
引言:什么是playbook?
一、Playbook
1.1、playbook中的核心元素
1.2、playbook中的基础组件
1.3、playbook格式说明
1.4、实例:httpd服务剧本
二、playbook中的模块
2.1、Templates 模块
2.3、Roles 模块
引言:什么是playbook?
剧本,就像一些综艺节目的剧本一个意思。按照剧本发展故事情节 在ansible中剧本也是类似的作用,第一步干啥,第二部干啥,第三步干啥....
一、Playbook
playbooks是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。
值得注意的是playbook是通过YAML格式来进行描述定义的。可以类比linux中执行shell脚本一样,批量执行命令。 ansible中的剧本也是一样,批量处理任务,而 playbook用的是yaml格式!
1.1、playbook中的核心元素
- hosts:执行的远程主机列表
- tasks:任务,由模板定义的操作列表
- vars:变量,内置变量或者自定义变量在playboook中调用
- templates:模板,即 使用模板语法的文件;可替换模板中的变量并实现一些简单逻辑的而文件
- handlers:和notify结合使用 ;当某条件满足时,触发执行的操作
- tags:标签,指定某条件下,用于选择运行playbook中的部分代码。Ansible具有幂等性,因此会自动跳过没有变化的部分,有些业务执行比较长,如果确认没有问题就可以通过tags跳过这些片段
- roles:角色
1.2、playbook中的基础组件
hosts:playbook中的每个play的目的都是为了让某个或者某些主机在某个指定的用户身份执行任务。hosts用于指定任务的主机,须事先定义在主机清单中
形式如下:
- hosts: websrvs
remote_user:可用于hosts和tasks中,也可以通过指定sudo的方式在远程主机上执行,其可用于paly全局或某任务;此外甚至可以在sudo时使用sudo_user指定sudo时切换的用户
- hosts: 192.168.176.128 remote_user: root
tasks:任务列表;格式有两种:
action: module argument
module: argument
建议使用第二种
特别注意:shell和command模块后面跟命令,而非key=value 某任务的状态在运行后changed时,可通过‘notify’通知给相应的handlers 任务可以通过‘tags’打标签,而后可在absible-playbook命令上使用-t指定进行调用
---
tasks:- name: disable selinuxcommand: /sbin/setenforce 0
---
# 如果命令或者脚本的退出码不为零,可以使用以下方式替代
tasks:- name: run this command and ignore the resultshell: /usr/bin/somecommand || /bin/true
---
tasks:- name: run this command and ignore the resultshell: /usr/bin/somecommandignore_errors: True
1.3、playbook格式说明
Hosts: 主机,部署目标Tasks: 任务,ansible,执行目的Varlables: 变量Templates: 包含了模板语法的文本文件;Handlers: 有特定条件触发的任务Roles : 角色 (特别介绍)
以下为playbook常用到的YMAL格式:
1、文件的第一行应该以 "---" (三个连字符)开始,表明YMAL文件的开始。
2、在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
3、YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。
4、同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。
5、play中hosts,variables,roles,tasks等对象的表示方法都是键值中间以":"分隔表示,":"后面还要增加一个空格
6、yml文件名以yml结尾或者yaml结尾
示例1:**
---
- hosts: allremote_user: roottasks:- name: install a groupgroup: name=mygrp system=true - name: install a useruser: name=user1 group=mygrp system=true示例2- hosts: websrvsremote_user: roottasks:- name: install httpd packageyum: name=httpd- name: start httpd service service: name=httpd state=started
主要由三个部分组成。
hosts部分:使用hosts指示使用哪个主机或主机组来运行下面的tasks,每个playbook都必须指定hosts,hosts也可以使用通配符格式。主机或主机组在inventory清单中指定,可以使用系统默认的/etc/ansible/hosts,也可以自己编辑,在运行的时候加上-i选项,指定清单的位置即可。在运行清单文件的时候,--list-hosts选项会显示那些主机将会参与执行task的过程中。 remote_user:指定远端主机中的哪个用户来登录远端系统,在远端系统执行task的用户,可以任意指定,也可以使用sudo,但是用户必须要有执行相应task的权限。 tasks:指定远端主机将要执行的一系列动作。tasks的核心为ansible的模块,前面已经提到模块的用法。tasks包含name和要执行的模块,name是可选的,只是为了便于用户阅读,不过还是建议加上去,模块是必须的,同时也要给予模块相应的参数。
1.4、实例:httpd服务剧本
1 vim test1.yaml --- #yaml文件以---开头,以表明这一个yaml文件,可省略2 3 - name: first play #定义一个play的名称,可省略 gather_facts: false #设置不进行facts信息收集,这可以加快执行速度,可省略 hosts: webservers #指定要执行任务的被管理主机组,如多个主机组用冒号分隔 remote_user: root #指定被管理主机上执行任务的用户 tasks: #定义任务列表,任务列表中的各任务按次序逐个在hosts中指定的主机上执行4 5 - name: test connection #自定义任务名称 ping: #使用 module: [options] 格式来定义一个任务6 - name: disable selinux command: '/sbin/setenforce 0' #command模块和shell模块无需使用key=value格式 ignore_errors: True #如执行命令的返回值不为0,就会报错,tasks停止,可使用ignore_errors忽略失败的任务7 - name: disable firewalld service: name=firewalld state=stopped #使用 module: options 格式来定义任务,option使用key=value格式8 - name: install httpd yum: name=httpd state=latest9 - name: install configuration file for httpd copy: src=/opt/httpd.conf dest=/etc/httpd/conf/httpd.conf #这里需要一个事先准备好的/opt/httpd.conf文件 notify: "restart httpd" #如以上操作后为changed的状态时,会通过notify指定的名称触发对应名称的handlers操作
10 - name: start httpd service service: enabled=true name=httpd state=started handlers: #handlers中定义的就是任务,此处handlers中的任务使用的是service模块
11 - name: restart httpd #notify和handlers中任务的名称必须一致 service: name=httpd state=restarted ##Ansible在执行完某个任务之后并不会立即去执行对应的handler,而是在当前play中所有普通任务都执行完后再去执行handler,这样的好处是可以多次触发notify,但最后只执行一次对应的handler,从而避免多次重启。
运行playbook
1 ansible-playbook test1.yaml
2 //补充参数:
3 -k(–ask-pass):用来交互输入ssh密码
4 -K(-ask-become-pass):用来交互输入sudo密码
5 -u:指定用户
6 ansible-playbook test1.yaml --syntax-check #检查yaml文件的语法是否正确
7 ansible-playbook test1.yaml --list-task #检查tasks任务
8 ansible-playbook test1.yaml --list-hosts #检查生效的主机
9 ansible-playbook test1.yaml --start-at-task='install httpd' #指定从某个task开始运行
二、playbook中的模块
2.1、Templates 模块
1、先准备一个以 .j2 为后缀的 template 模板文件,设置引用的变量1 cp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2
2
3 vim /opt/httpd.conf.j2
4 Listen {{http_port}} #42行,修改
5 ServerName {{server_name}} #95行,修改
6 DocumentRoot "{{root_dir}}" #119行,修改
2、修改主机清单文件,使用主机变量定义一个变量名相同,而值不同的变量
1 vim /etc/ansible/hosts
2 [webservers]
3 192.168.118.104 http_port=192.168.118.104:80 server_name=www.accp.com:80 root_dir=/etc/httpd/htdocs
4
5 [dbservers]
6 192.168.118.102 http_port=192.168.118.102:80 server_name=www.benet.com:80 root_dir=/etc/httpd/htdocs
3、编写 playbook
vim apache.yaml
---
- hosts: all
remote_user: root
vars:
- package: httpd
- service: httpd
tasks:
- name: install httpd package
yum: name={{package}} state=latest
- name: install configure file
template: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf #使用template模板
notify:
- restart httpd
- name: create root dir
file: path=/etc/httpd/htdocs state=directory
- name: start httpd server
service: name={{service}} enabled=true state=started
handlers:
- name: restart httpd
service: name={{service}} state=restartedansible-playbook apache.yaml
2.2、tags 模块
- 可以在一个playbook中为某个或某些任务定义“标签”,在执行此playbook时通过ansible-playbook命令使用--tags选项能实现仅运行指定的tasks。
- playbook还提供了一个特殊的tags为always。作用就是当使用always当tags的task时,无论执行哪一个tags时,定义有always的tags都会执行。
vim webhosts.yaml
---
- hosts: webservers
remote_user: root
tasks:
- name: Copy hosts file
copy: src=/etc/hosts dest=/opt/hosts
tags:
- only #可自定义
- name: touch file
file: path=/opt/testhost state=touch
tags:
- always #表示始终要运行的代码ansible-playbook webhosts.yaml --tags="only"vim dbhosts.yaml
---
- hosts: dbservers
remote_user: root
tasks:
- name: Copy hosts file
copy: src=/etc/hosts dest=/opt/hosts
tags:
- only
- name: touch file
file: path=/opt/testhost state=touchansible-playbook dbhosts.yaml --tags="only"
//分别去两台被管理主机上去查看文件创建情况
2.3、Roles 模块
- Ansible为了层次化、结构化地组织Playbook,使用了角色(roles),roles可以根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们。roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。
1、roles 的目录结构
cd /etc/ansible/ tree roles/ roles/ ├── web/ │ ├── files/ │ ├── templates/ │ ├── tasks/ │ ├── handlers/ │ ├── vars/ │ ├── defaults/ │ └── meta/ └── db/ ├── files/ ├── templates/ ├── tasks/ ├── handlers/ ├── vars/ ├── defaults/ └── meta/
2、roles 内各目录含义解释
(1)files
- 用来存放由 copy 模块或 script 模块调用的文件。
(2)templates
- 用来存放 jinjia2 模板,template 模块会自动在此目录中寻找 jinjia2 模板文件。
(3)tasks
- 此目录应当包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用 include 包含其它的位于此目录的 task 文件。
(4)handlers
- 此目录应当包含一个 main.yml 文件,用于定义此角色中触发条件时执行的动作。
(5)vars
- 此目录应当包含一个 main.yml 文件,用于定义此角色用到的变量。
(6)defaults
- 此目录应当包含一个 main.yml 文件,用于为当前角色设定默认变量。
(7)meta
- 此目录应当包含一个 main.yml 文件,用于定义此角色的特殊设定及其依赖关系。
3、在一个 playbook 中使用 roles 的步骤
(1)创建以 roles 命名的目录
1 mkdir /etc/ansible/roles/ -p #yum装完默认就有
(2)创建全局变量目录(可选)
mkdir /etc/ansible/group_vars/ -ptouch /etc/ansible/group_vars/all #文件名自己定义,引用的时候注意
(3)在 roles 目录中分别创建以各角色名称命令的目录,如 httpd、mysql
mkdir /etc/ansible/roles/httpd
mkdir /etc/ansible/roles/mysql
(4)在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,也可以不创建
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta}
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}
(5)在每个角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件,千万不能自定义文件名
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
(6)修改 site.yml 文件,针对不同主机去调用不同的角色
vim /etc/ansible/site.yml
---
- hosts: webservers
remote_user: root
roles:
- httpd
- hosts: dbservers
remote_user: root
roles:
- mysql(7)运行 ansible-playbookcd /etc/ansible
ansible-playbook site.yml
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/df22a85d5b84f3d7bfe85c6a1e54016a.gif)
Ansible---playbook剧本
目录 引言:什么是playbook? 一、Playbook 1.1、playbook中的核心元素 1.2、playbook中的基础组件 1.3、playbook格式说明 1.4、实例:httpd服务剧本 二、playbook中的模块 2.1、Templates 模块 2.2、tags 模块 2.3、Roles 模块 引言&…...
![](https://img-blog.csdnimg.cn/img_convert/90b377a808a7b8cbeddad0a06bf2aa79.png)
Delphi 中TImageCollection和TVirtualImageList 控件实现high-DPI
一、概述RAD Studio允许你通过使用TImageCollection组件和TVirtualImageList组件,在你的Windows VCL应用程序中包含缩放、高DPI、多分辨率的图像。这两个组件位于Windows 10面板中:注意:如果你使用FireMonkey进行跨平台应用,请看T…...
![](https://img-blog.csdnimg.cn/db0d3f30adb746539b7fe716519ecf41.png)
Ros中如何给UR5配置自定义工具 | 在Rviz中给UR5机器人装载定义工具 | UR5配置自定义末端执行器
前言 在学习和项目研究的过程中,我需要在Ur5e上装上工具,以对现实场景进行仿真。网上会有一些装载/配置现成的夹爪,例如Robotiq等。但和我们装载自定义工具的场景还有些差异,因此写一篇博客记录,可能有偏差。如果有问…...
![](https://img-blog.csdnimg.cn/img_convert/766a0baa38ca693085686cc1b376e3b1.jpeg)
数据库 delete 表数据后,磁盘空间为什么还是被一直占用?
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 最近有个上位机获取下位机上报数据的项目,…...
![](https://img-blog.csdnimg.cn/img_convert/532d7f6c6b22baa635006cb18142690b.png)
docker-微服务篇
docker学习笔记1.docker简介1.1为什么会出现docker?1.2docker理念1.3虚拟机(virtual machine)1.4容器虚拟化技术1.5一次构建到处运行2.docker安装2.1前提条件2.2docker基本构成2.3docker安装步骤*2.4测试镜像3.docker常用命令3.1 启动docker3…...
![](https://img-blog.csdnimg.cn/1b1d5d0a5bd840b4a15253fc125b367b.png)
图像优化篇
目录(1)矢量图(2)位图 2.1 分辨率2,图像格式格式选择建议:(1)矢量图 被定义为一个对象,包括颜色,大小,形状,以及屏幕位置等属性&…...
![](https://www.ngui.cc/images/no-images.jpg)
在surface go 2上安装ubuntu 20.04
在surface go 2上安装ubuntu 20.04 1.制作安装盘 下载ubuntu系统的iso文件 使用Rufus软件将u盘制作为ubuntu系统的安装盘 2.在surface go 2上操作 禁用快速启动 在 Windows 中,禁用“电源选项”中的“快速启动”>选择电源按钮的功能 禁用 Bitlocker 在 Wi…...
![](https://img-blog.csdnimg.cn/986f5bbfd6ee4be395f722ae40e53ac1.png)
Java:SpringMVC的使用(1)
目录第一章、SpringMVC基本了解1.1 概述1.2 SpringMVC处理请求原理简图第二章、SpringMVC搭建框架1、搭建SpringMVC框架1.1 创建工程【web工程】1.2 导入jar包1.3 编写配置文件(1) web.xml注册DispatcherServlet(2) springmvc.xml(3) index.html1.4 编写请求处理器【Controller…...
![](https://img-blog.csdnimg.cn/101be8dfc8454028b6c43aef6be2666b.webp)
自动化测试岗位求职简历编写规范+注意事项,让你的简历脱颖而出
目录 前言 1.个人信息 2.教育背景(写最高学历) 3.个人技能(按精通/掌握/熟练/了解层次来写) 4.工作经历 5.工作经验/项目经历 6.自我评价 总结 前言 挑选一个阅读舒适度不错的模板 HR和面试官看的简历多,都是快速阅读,舒适度特别重要;…...
![](https://img-blog.csdnimg.cn/img_convert/b6eddc71dd4eb47b5ddb367aa387a85e.png)
C 字符串
在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符&#…...
![](https://www.ngui.cc/images/no-images.jpg)
【每日一题Day115】LC2335装满杯子需要的最短总时长 | 贪心
装满杯子需要的最短总时长【LC2335】 You have a water dispenser that can dispense cold, warm, and hot water. Every second, you can either fill up 2 cups with different types of water, or 1 cup of any type of water. You are given a 0-indexed integer array amo…...
![](https://www.ngui.cc/images/no-images.jpg)
Flink流计算处理-旁路输出
使用Flink做流数据处理时,除了主流数据输出,还自定义侧流输出即旁路输出,以实现灵活的数据拆分。 定义旁路输出标签 首先需要定义一个OutputTag,代码如下: // 这需要是一个匿名的内部类,以便我们分析类型…...
![](https://img-blog.csdnimg.cn/170f261130854ff0b9e336ed5ebed0e9.png)
nginx正向代理的配置和使用
nginx正向代理的配置和使用 nginx正向代理的配置和使用nginx正向代理的配置和使用安装包准备下载nginx安装包下载正向代理模块的包版本与模块对照表部署nginx服务上传nginx包和正向模块包解压,改名安装nginx配置正向代理创建nginx用户检查nginx配置并启动nginx服务所在服务器验…...
![](https://img-blog.csdnimg.cn/55dc74ebae7f482aad619318b6a71d03.png)
Oracle Trace File Analyzer 介绍及简单使用
一、什么是Oracle Trace File Analyzer Oracle Autonomous Health Framework(AHF) 包含 Oracle ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer(TFA). AHF工具包包含了Oracle常用的多种诊断工具,如 ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer…...
![](https://img-blog.csdnimg.cn/aa1e0ac8c34e4984a493c4ea31972697.png)
面试实战篇 | 快手本地生活,结合项目谈Redis实战项目场景?MySQL InnoDB存储引擎如何工作的?策略模式?
本期是【你好,面试官】系列文章的第21期,持续更新中…。 《你好,面试官》系列目前已经连载20篇了,据说看了这个系列的朋友都拿到了大厂offer~ 你好,面试官 | 你真的理解面向 “对象”?你好,面…...
![](https://img-blog.csdnimg.cn/4f05397c5437406383e1717e915ffebc.png)
Hadoop之——WordCount案例与执行本地jar包
目录 一、WordCount代码 (一)WordCount简介 1.wordcount.txt (二)WordCount的java代码 1.WordCountMapper 2.WordCountReduce 3.WordCountDriver (三)IDEA运行结果 (四)Hadoop运行wordcount 1.在HDFS上新建一个文件目录 2.新建一个文件,并上传至该目录下…...
![](https://img-blog.csdnimg.cn/950741c3e1fd46759fec6eaf2b4f1c08.png)
利用git reflog 命令来查看历史提交记录,并使用提交记录恢复已经被删除掉的分支
一.问题描述 当我们在操作中手误删除了某个分支,那该分支中提交的内容也没有了,我们可以利用git reflog这个命令来查看历史提交的记录从而恢复被删除的分支和提交的内容 二.模拟问题 1.创建git仓库,并提交一个文件 [rootcentos7-temp /da…...
![](https://img-blog.csdnimg.cn/8d635506a4f54b46862bc6793d339b35.png)
【软件测试】大厂测试开发你真的了解吗?测试开发养成记......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 在一些大公司里&…...
![](https://img-blog.csdnimg.cn/img_convert/3d4d4e85f5ad0f6b8b74c583604adbfa.png)
Redis中的hash结构和扩容机制
1.rehash原理 hash包含两个数据结构为字典数组ht[0]和ht[1]。其中ht[0]用来存放数据,ht[1]在rehash时使用。 扩容时,ht[1]的大小为第一个大于等于ht[0].used*2的2的幂次方的数; 收缩时,ht[1]的大小为第一个大于等于ht[0].used的…...
![](https://www.ngui.cc/images/no-images.jpg)
【C++奇技淫巧】前置自增与后置自增的区别(++i,i++)【2023.02.08】
简介 先说i和i的区别,判断语句中if(i)是拿i的值先判断,而后自增;if(i)是先自增i再进行判断。涉及到左值与右值也有点区别,i返回的是右值,i返回的是左值。也就是下面的代码要解释的东西。 #include <iostream>i…...
![](https://img-blog.csdnimg.cn/ac3c5910414041e6b6af0ff3dd1850e4.png)
实战打靶集锦-005-HL
**写在前面:**记录一次曲折的打靶经历。 目录1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 浏览器访问4.2 目录枚举4.3 探查admin4.4 探查index4.5 探查login5 公共EXP搜索6. 再次目录枚举6.1 探查superadmin.php6.2 查看页面源代码6.3 base64绕过6.4 构建反弹…...
![](https://www.ngui.cc/images/no-images.jpg)
铁路系统各专业介绍(车机工电辆)
目录 1 车务段 1.1 职能简介 1.2 路段名单 1.3 岗位级别 2 机务段 2.1 职能简介 2.2 路段名单 2.3 岗位级别 3 工务段 3.1 职能简介 3.2 路段名单 3.3 岗位级别 4 电务段 4.1 职能简介 4.2 路段名单 4.3 岗位级别 5 车辆段 5.1 职能简介 5.2 路段名单 5.3 …...
![](https://www.ngui.cc/images/no-images.jpg)
2/11考试总结
时间安排 7:30–7:50 读题,T1貌似是个 dp ,T2 数据结构,T3 可能是数据结构。 7:50–9:45 T1,点规模非常大,可以达到 1e18 级别,感觉应该没法直接做,考虑每条新增的边的贡献,想到用 …...
![](https://img-blog.csdnimg.cn/20210713222801830.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1YW4yMDE5MDM1MDU1,size_16,color_FFFFFF,t_70#pic_center)
Java Set集合
7 Set集合 7.1 Set集合的概述和特点 Set集合的特点 不包含重复元素的集合没有带索引的方法,所以不能使用普通for循环 Set集合是接口通过实现类实例化(多态的形式) HashSet:添加的元素是无序,不重复,无索引…...
![](https://img-blog.csdnimg.cn/img_convert/09af23ba744208f704431179f362b1d5.png)
【手写 Vuex 源码】第七篇 - Vuex 的模块安装
一,前言 上一篇,主要介绍了 Vuex 模块收集的实现,主要涉及以下几个点: Vuex 模块的概念;Vuex 模块和命名空间的使用;Vuex 模块收集的实现-构建“模块树”; 本篇,继续介绍 Vuex 模…...
![](https://img-blog.csdnimg.cn/2bfb35b145584aec8c90ebdd04dbe278.png)
EOC第六章《块与中枢派发》
文章目录第37条:理解block这一概念第38条:为常用的块类型创建typedef第39条:用handler块降低代码分散程度第41条:多用派发队列,少用同步锁方案一:使用串行同步队列来将读写操作都安排到同一个队列里&#x…...
![](https://img-blog.csdnimg.cn/7460ebee3254453daff18272697dd092.png)
八、Git远程仓库操作——跨团队成员的协作
前言 前面一篇博文介绍了git团队成员之间的协作,现在在介绍下如果是跨团队成员的话,如何协作? 跨团队成员协作,其实就是你不属于那个项目的成员,你没有权限向那个仓库提交代码。但是github还有另一种 pull request&a…...
![](https://img-blog.csdnimg.cn/da4534e20d1749b8ac21fbd230a56056.png)
算法刷题打卡第88天:字母板上的路径
字母板上的路径 难度:中等 我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "…...
![](https://img-blog.csdnimg.cn/328d35b3d5b747df8d020b1ef64425ed.png)
UVa The Morning after Halloween 万圣节后的早晨 双向BFS
题目链接:The Morning after Halloween 题目描述: 给定一个二维矩阵,图中有障碍物和字母,你需要把小写字母移动到对应的大写字母位置,不同的小写字母可以同时移动(上下左右四个方向或者保持不动 ࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
Connext DDS属性配置参考大全(3)
Transport传输dds.participant.logging.time_based_logging.process_received_messagedds.participant.logging.time_based_logging.process_received_message.timeout...
做包装找灵感看什么网站/成都达洱狐网络科技有限公司
上一篇“记录一次基于vue、typescript、pwa的项目由开发到部署”,发布后,忙于秋招的楼主我,终于有时间来写这篇文章。最近秋招也挺顺利,拿到了网易广州岗的offer,对目前想留在广州发展的我来说真是太合适不过了。在最近…...
![](/images/no-images.jpg)
餐饮加盟培训网站建设/网络营销是什么专业
被锁的原因就是有人在你之前修改记录,此时oracle会通过事务锁锁住这个记录,而且这个修改记录的人还没有提交或回滚记录,接下来你又试图修改同一条记录,你就会被这个事务锁所阻塞。 处理方法很简单,可以有以下两种方法&…...
![](https://img-blog.csdnimg.cn/img_convert/807106ccb6b7c7374cc0fa5cdf59498d.png)
wordpress开启伪静态/哈尔滨seo关键词排名
离散数学实验报告3 文章目录离散数学实验报告3一、实验题目二、实验目的三、实验要求需求分析:输入形式与输入范围概要设计:使用的数据结构与算法:程序流程:详细代码一、实验题目 实验题目:平面图判定及对偶图的求解 实…...
![](/images/no-images.jpg)
荣泰建设集团网站/郑州seo优化
1)、在两台机子上面分别安装 mysql , keepalived2)、keepalived 主从:主:vim /etc/keepalived/keepalived.confvrrp_instance VI_1 {state BACKUP # 备用用 BACKUPinterface eth2 #用的是哪个网卡virtual_router_id 59 #虚拟路由地址必须一样&…...
![](https://img-blog.csdnimg.cn/a1e59a0e63cf4452b08a31d13b179490.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN54mM5LiN5pS5,size_20,color_FFFFFF,t_70,g_se,x_16)
重庆做网站建设企业/百度自媒体平台
【人工智能】Astar算法求解8数码问题(QDU) 【人工智能】利用α-β搜索的博弈树算法编写一字棋游戏(QDU) 【人工智能】Fisher 线性分类器的设计与实现(QDU)【人工智能】感知器算法的设计实现(QDU…...
![](/images/no-images.jpg)
培训网站模板/百度搜索榜
hdu_2242 题目大意:求将一张无向图(n个点,m条边)移除一条边分为不连通两部分,使得两部分的点权和最接近,若无法分为两部分,则输出impossible。 题解:拿到题面还算清晰,就…...