Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)
目录
一、ansible概述
1、简介
2、Ansible主要功能:
3、Ansible的另一个特点:所有模块都是幂等性
4、Ansible的优点:
5、Ansible的四大组件:
二、ansible环境部署:
1、环境:
2、安装ansible:
3、Ansible的配置文件:
4、 配置远程主机清单
三、ansible的模块(重要)
1、ansible的命令格式:
2、模块1:command模块
3、模块二:shell模块
4、模块3:cron模块
5、模块4:USER模块
6、模块5:group模块(了解)
7、模块6:ping模块
8、模块7:hostname模块
9、模块8:COPY模块
10、模块9:file模块
11、模块10:yum模块
12、模块11:service/systemd模块
13、模块12:script模块
14、模块13:setup模块
四、管理主机清单
1、主机变量
2、组变量
3、组嵌套
一、ansible概述
1、简介
Ansible是自动化运维工具,能实现跨主机对应用编排管理部署。
Ansible能批量配置、部署、管理上千台主机,是应用级别的跨主机编排工具。
比如以前需要切换到每个主机上执行的一或多个操作,使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作。
是基于python开发的配置管理和应用部署工具。在自动化运维中,现在是异军突起
2、Ansible主要功能:
远程操控主机功能
自动化运维(playbook剧本yaml格式)
Ansible能批量的配置、部署、管理上千台主机。类似于xshell的一键输入的工具,不需要每次都切换主机进程操作,只要有一台Ansible的固定主机,就可以实现所有节点的操作
不需要agent(客户端)的概念,只需要一台主机上配置了Ansible即可
Ansible是基于模块来进行工作的,只是提供了一种运行的架构,真正执行操作和变更的是Ansible的模块来实现的。
Ansible默认是通过ssh的密钥对实现通信。(可以改)
3、Ansible的另一个特点:所有模块都是幂等性
所谓幂等性,指的是多次操作和多次执行对系统资源的影响是一致的
systemctl stop firewalld 是幂等性
systemctl restart firewalld不是幂等性
http的get是幂等性
http的post不是幂等性
Ansible的幂等性,决定了你可以放心大胆的使用,重复执行摸个任务不会对结果产生任何影响(绝大多数情况)
4、Ansible的优点:
部署较为简单,只要在控制主机部署即可。被控制主机需要有ssh和python2.5以上版本。基本上Linux虚拟机都能满足这两个
Ansible只能控制Linux系统,Windows不行
基于模块工作,可以使用任意语言开发模块(二次开发,底层架构)
5、Ansible的四大组件:
- inventory主机清单(主机组):定义Ansible可以远程操作的服务器
- 模块:常用的有13个模块。通过模块可以实现远程的配置和操作
- plugins插件
- playbook:基本(shell脚本)yaml格式
二、ansible环境部署:
1、环境:
管理端:20.0.0.21 Ansible
被管理端:20.0.0.22、20.0.0.23
2、安装ansible:
基于epel源安装
先安装 epel 源
yum install -y epel-releaseyum安装ansible
yum install -y ansible
3、Ansible的配置文件:
/etc/ansible/
ansible.cfg:ansible的主配置文件,一般无需修改
hosts:主机组,声明可以被控制的主机
roles:公共角色目录
4、 配置远程主机清单
修改hosts文件:
vim hosts
配置主机有两种方式:1、直接声明主机的IP地址 2、主机名(要在/etc/hosts中做映射)
主机上生成密钥对并且传给被控制主机:
ssh-keygen -t rsa
配置密钥对验证
ssh-keygen -t rsa #一路回车,使用免密登录
sshpass -p '123' ssh-copy-id root@20.0.0.22
sshpass -p '123' ssh-copy-id root@20.0.0.23
若发送密钥对不成功,先到目标主机上执行一个命令,然后再传
ansible 20.0.0.23 -m command -a 'date'
ansible 20.0.0.22 -m command -a 'date'
三、ansible的模块(重要)
1、ansible的命令格式:
ansible 组名/IP地址 -m 模块名称 -a '参数列表(执行的命令)'ansible 20.0.0.23 -m shell -a 'touch /opt/123 && echo 123 > /opt/123 && cat /opt/123'
&& 逻辑且,前一个命令成功才会执行下一个命令ansible 20.0.0.23 -m shell -a 'touch /opt/456 ; ehco 456 > /opt/456 ; cat /opt/456'
;分号表示逻辑或,前面不管成功与否,后面的命令都会执行
ansible不适用交互式的命令
2、模块1:command模块
在远程主机执行Linux命令,不支持管道符,重定向输出
指定IP地址:
ansible 20.0.0.23 -m command -a 'date'
ansible 20.0.0.22 -m command -a 'date'
指定组,组内所有的声明主机都会执行:
ansible webserver -m command -a 'date'
ansible dbservers -m command -a 'date'
所有声明的主机全都执行:
ansible all -m command -a 'date'
不加-m,不声明使用的模块,默认就是command模块:
ansible 20.0.0.23 -a 'date'
command的一些常用参数:
chdir:在远程主机上运行命令,提前进入目录
先进home目录,然后再执行命令
ansible all -m command -a 'chdir=/opt ls'
creates:判断指定文件是否存在,若存在,不执行后续的操作
ansible all -m command -a 'creates=/opt/123 ls/opt'
removes:ansible all -m command -a 'chdir=/opt ls'
ansible 20.0.0.22 -m command -a 'removes=/opt/123 ls/opt'
3、模块二:shell模块
在远程主机上执行命令,相当于远程主机
ansible 20.0.0.22 -m shell -a 'useradd test'#创建用户test
ansible 20.0.0.22 -m shell -a 'echo 123456 | passwd --stdin test'#给test用户创建密码
举个例子:将IP地址切片出来:
ansible 20.0.0.22 -m shell -a "echo $(ifconfig ens33 | awk 'NR==2{print $2}')"
在ansible当中,多个引号之间要做隔离
创建脚本,再写入内容,最后执行
举个例子:写一个脚本
ansible 20.0.0.22 -m shell -a 'echo -e "#/bin/bash\nifconfig" > /opt/test.sh && sh /opt/test.sh'
4、模块3:cron模块
远程给主机设置定时任务
两种状态: present表示添加(默认就是添加,可以省略)
absent:表示移除。在ansible中absent都可以表示移除的意思(删除)
* * * * * 分时日月周
分=minute
时=hour
日=day
月=month
周=weekday
job:任务计划需要执行的命令或者脚本
name:任务计划的名称,可以不加
ansible 20.0.0.22 -m cron -a 'minute="*/5" job="ls /opt" name=test1'
举个例子:
写一个9月1号8点30分,执行ls /opt 任务名:test2
30 8 1 9 *
ansible 20.0.0.22 -m cron -a 'minute="30" hour="8" day="1" month="9" job="ls /opt" name="test2"'
查看定时任务:
ansible 20.0.0.22 -m command -a 'crontab -l'
删除定时任务:
ansible 20.0.0.22 -m cron -a 'name=test1 state=absent'
删除未命名的定时任务(所有的None都会删除):
多个定时任务,如果不给名字都是None,一旦删除None,全部删除,不推荐(最好是指定一个不重复的名称)
ansible 20.0.0.22 -m cron -a 'name=None state=absent'
5、模块4:USER模块
用户管理模块
常用的参数:
name 指定用户名,必须要有
state present:创建用户,可以不加,默认
absent :删除一定要加absent
system=yes|no。标记用户使用是一个程序用户
uid:用户的唯一标识
group:指定用户的所在组
create_home=yes|no:替换用户的家目录,不替换可以不写,可省略
password:给用户创建密码
comment:添加用户的注释信息,可有可无
remove=yes|no,当删除用户时,加上remove=yes,删除用户的家目录,相当于userdel -r。如果不需要删除用户家目录,可省略这一项
ansible 20.0.0.22 -m user -a 'name=koeda system=yes '
在创建用户时,虽然我声明了是一个程序用户,但是默认的登录shell如果没有额外的声明,还是默认的/bin/bash,UID会按照程序用户来指定
创建程序用户:
ansible 20.0.0.22 -m user -a 'name=koeda1 system=yes shell=/sbin/nologin'
使用ansible的USER模块创建用户时,如果创建普通用户可以不加system=no,指定shell类型也可以不加,默认就是/bin/bash
如果创建程序用户,一定要声明system=yes,声明shell的类型 shell=/sbin/nologin
也可以指定uid的方式,给用户分配一个uid
创建用户,选择uid,创建密码,指定家目录:
ansible 20.0.0.22 -m user -a 'name=koeda3 uid=1010 password=123456 home=/opt/test1'
更改用户家目录:
ansible 20.0.0.22 -m user -a 'name=koeda3 home=/home/koeda3 create_home=yes'
删除用户及其家目录:
ansible 20.0.0.22 -m user -a 'name=koeda remove=yes state=absent'
6、模块5:group模块(了解)
用户组的管理模块
gid 设置组的id
name必须要有
创建用户组:
ansible 20.0.0.22 -m group -a 'name=test1 gid=306 system=yes'
创建用户时添加到指定的组:
ansible 20.0.0.22 -m user -a 'name=test uid=1011 group=test1 '
删除用户组:
ansible 20.0.0.22 -m group -a 'name=test1 state=absent'
7、模块6:ping模块
ansible all -m ping
能ping通的主机必须是声明的主机
只有在/etc/ansible/hosts文件中声明的主机,ansible的控制端才可以进行远程操作
8、模块7:hostname模块
更改被控制端的主机名:
ansible 20.0.0.22 -m hostname -a 'name=webservers'ansible 20.0.0.23 -m hostname -a 'name=dbservers'
9、模块8:COPY模块
用于复制指定的主机文件到远程主机的模块
常用的参数:
dest:指出要复制的文件在哪,必须使用绝对路径。如果源目标是目录,指目标也得是目录。如果目标的文件存在,会覆盖原有的内容
src:复制文件的源,最好使用绝对路径,源目标是目录,指目标也得是目录
owner:支出文件的所有者
group:指定文件的所在组
content:从主机复制指定的内容到目标主机,用content就不能使用src
mode:指定复制之后的文件的权限
ansible 20.0.0.22 -m copy -a 'src=/opt/123 dest=/opt/123.txt owner=test mode=655'
举个例子:将ky32.txt文件复制到22主机,所有者test程序用户,所在组test,文件的权限600
ansible 20.0.0.22 -m user -a 'name=test system=yes shell=/sbin/nologin'
#创建程序用户
ansible 20.0.0.22 -m group -a 'name=test gid=333 system=yes'
#创建用户组
ansible 20.0.0.22 -m copy -a 'src=/opt/ky32.txt dest=/opt/32.txt owner=guoqi group=guoqi mode=600'
#复制文件,并且给权限
复制目录:
复制目录时,要保证不是空目录,要有文件
ansible 20.0.0.22 -m copy -a 'src=/opt/test dest=/opt/test1/ mode=777'
指定输入一个内容:
相当于echo功能
echo一个hello world!到22主机的opt下
ansible 20.0.0.22 -m copy -a 'content="hello world!" dest=/opt/hello.txt'
10、模块9:file模块
文件模块跟目录没有关系
管理文件属性
相关参数:
owner、group、mode等
state=link:创建链接文件
state=touch:创建文件
state=directory 创建目录
state=absent:删除文件
修改文件的所有者和所在组
ansible 20.0.0.22 -m file -a 'owner=test group=test mode=777 path=/opt/demo.txt'
file模块创建文件
ansible 20.0.0.22 -m file -a 'path=/opt/ky32.txt state=touch'
#创建文件
file模块创建目录
ansible 20.0.0.22 -m file -a 'path=/opt/ky32 state=directory'
将本机的/etc/fatab文件复制到远程主机,再用这个文件创建一个连接文件:
ansible 20.0.0.23 -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak'
#先复制
ansible 20.0.0.23 -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link'
#在创建链接文件
基于file模式删除远程文件
ansible 20.0.0.23 -m file -a 'path=/opt/fstab.link state=absent'
11、模块10:yum模块
在远程主机上安装软件包
ansible 20.0.0.23 -m yum -a 'name=httpd'ansible 20.0.0.23 -m yum -a 'name=tree'
在目标主机上的操作都是后台运行,不影响其他用户的使用。在日志中能打印
卸载软件:
ansible 20.0.0.23 -m yum -a 'name=tree state=absent'
12、模块11:service/systemd模块
常用参数:
state=started|stopped|restarted 三种管理动作
enabled=true 表示是否设置开机自启,默认就是开机不自动启动
runlevel:配合enabled的,若设置开机自启,可以设置运行级别。在命令行可以设置,但是不生效,必须要在playbook中使用
ansible 20.0.0.52 -m service -a 'enabled=ture name=nginx state=restarted'
举个例子:nginx 安装nginx 设置为开机自动,设置访问页面this is nginx
ansible 20.0.0.52 -m yum -a 'name=epel-release'ansible 20.0.0.52 -m yum -a 'name=nginx'ansible 20.0.0.52 -m service -a 'enabled=true name=nginx state=restarted'ansible 20.0.0.52 -m shell -a 'echo this is nginx > /usr/share/nginx/html'
13、模块12:script模块
运行本地脚本,然后将结果输出到目标主机
先创建一个脚本
chmod 777 test.sh
运行脚本,将内容输出到远程主机上
ansible all -m script -a 'test.sh'
14、模块13:setup模块
主要作用就是查看目标主机的环境信息(facts),目标节点的系统信息
查看所有环境信息
ansible all -m setup
查看目标主机的IP信息
ansible all -m setup -a 'filter=*ipv4'
查看CPU信息:
ansible all -m setup -a 'filter=*memory*'
ansible_processor
查看内存信息:
ansible all -m setup -a 'filter=*memory*'
ansible_memory_mb
查看内核:
ansible all -m setup -a 'filter=*proc*'
ansible_processor
查看os系统:
ansible all -m setup -a 'filter=*os*'
ansible_os_family
查看硬盘信息:
ansible all -m setup -a 'filter=*dev*'
ansible_devices
四、管理主机清单
快速声明多个主机
vim /etc/ansible/hosts
20.0.0.6[1:3]
#声明主机范围。表示声明20.0.0.61-63主机
取消密钥队免密登录
ansible_host:声明连接时的IP地址
ansible_port:声明对方的连接端口。默认是ssh的默认端口
ansible_user:指定连接时使用对方主机的用户名。不指定表示主机执行ansible的用户即为使用目标主机的用户名
ansible_password:指定连接ssh时的密码。这里是目标主机的用户密码
ansible_become:提升用户权限。也可以改变用户的身份
例如:ansible_become root。需要声明用户的密码
ansible_become-password:指定切换用户的密码。基于免密钥登录实现。
1、主机变量
vim /etc/ansible/hosts
#声明主机变量
#指定ip,定义好ssh连接的端口,用户,密码。做到免密连接
20.0.0.2[5:6] ansible_port=22 ansible_user=root ansible_password=123
这里将25、26主机生面变量,27没有声明
vim /etc/ansible/ansible.cfg
取消ssh的秘钥对验证
#---71行取消注释---
host_key_checking = False
测试连通性:
ansible webservers -m ping
这里注意:
声明好的主机节点的端口必须是22,root用户的密码必须是123
2、组变量
声明组变量
[webservers:vars] #表示为 webservers 组内所有主机定义变量
ansible_user=root
#所有主机用户都是root
ansible_password=123
#所有主机密码都是123
ansible_port=22
#所有主机端口都是22
声明所有的主机都是用相同的用户名密码和端口
[all:vars1] #表示为所有组内的所有主机定义变量
ansible_user=root
#所有主机用户都是root
ansible_password=123
#所有主机密码都是123
ansible_port=22
#所有主机端口都是22
3、组嵌套
[nginx]
20.0.0.20
20.0.0.21
20.0.0.22[apache]
20.0.0.3[0:3][webs:children] #表示为 webs 主机组中包含了 nginx 组和 apache 组内的所有主机
nginx
apache
相关文章:
Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)
目录 一、ansible概述 1、简介 2、Ansible主要功能: 3、Ansible的另一个特点:所有模块都是幂等性 4、Ansible的优点: 5、Ansible的四大组件: 二、ansible环境部署: 1、环境: 2、安装ansible&#…...
QT中网络编程之发送Http协议的Get和Post请求
文章目录 HTTP协议GET请求POST请求QT中对HTTP协议的处理1.QNetworkAccessManager2.QNetworkRequest3.QNetworkReply QT实现GET请求和POST请求Get请求步骤Post请求步骤 测试结果 使用QT的开发产品最终作为一个客户端来使用,很大的一个功能就是要和后端服务器进行交互…...
Java 并发编程 —— Fork/Join 框架的原理详解
目录 一. 前言 二. 并发和并行 2.1. 并发 2.2. 并行 2.3. 分治法 三. ForkJoin 并行处理框架的理论 3.1. ForkJoin 框架概述 3.2. ForkJoin 框架原理 3.3. 工作窃取算法 四. ForkJoin 并行处理框架的实现 4.1. ForkJoinPool 类 4.2. ForkJoinWorkerThread 类 4.3.…...
3-10岁孩子语文能力培养里程碑
文章目录 基础能力3岁4岁5岁6-7岁(1-2年级)8-9岁(3-4年级)10岁(5年级) 阅读推荐&父母执行3岁4-5岁6-7岁(1-2年级)8-9岁(3-4年级)10岁(5年级&a…...
Vue+ElementUi 基于Tree实现动态节点添加,节点自定义为输入框列
VueElementUi 基于Tree实现动态节点手动添加,节点自定义为输入框列 代码 <el-steps :active"active" finish-status"success" align-center><el-step title"test1"/><el-step title"test2"/><el-st…...
Web前端-JavaScript(js数组和函数)
文章目录 1.数组1.1 数组的概念1.2 创建数组1.3 获取数组中的元素1.4 数组中新增元素1.5 遍历数组 2.函数2.1 函数的概念2.2 函数的使用函数声明调用函数函数的封装 2.3 函数的参数函数参数语法函数形参和实参数量不匹配时 2.4 函数的返回值2.4.1 案例练习 2.5 arguments的使用…...
判断数据是否为整数--函数设计与实现
#定义函数:is_num(s),判断输入的数据是否整数。 #(1)判断是否是数字 def is_num(s):if s.isdigit(): #isdigit()是一个字符串方法,用于检查字符串是否只包含数字字符。如果字符串只包含数字字符,则返回True;否则返回Falsereturn T…...
netty源码:(29)ChannelInboundHandlerAdapter
它实现的方法都有一个ChannelHandlerContext参数,它的方法都是直接调用ChannelHandlerContext参数对应的方法,该方法会调用下一个handler对应的方法。 可以继承这个类,重写感兴趣的方法,比如channelRead. 这个类有个子类:SimpleC…...
Shell脚本应用(二)
一、条件测试操作 Shell环境根据命令执行后的返回状态值〈$?)来判断是否执行成功,当返回值为О时表示成功.否则〈非О值)表示失败或异常。使用专门的测试工具---test命令,可以对特定条件进行测试.并根据返回值来判断条件是否成立…...
Kafka基本原理及使用
目录 基本概念 单机版 环境准备 基本命令使用 集群版 消息模型 成员组成 1. Topic(主题): 2. Partition(分区): 3. Producer(生产者): 4. Consumer(…...
使用Python爬取GooglePlay并从复杂的自定义数据结构中实现解析
文章目录 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布…...
前后端分离下的鸿鹄电子招投标系统:使用Spring Boot、Mybatis、Redis和Layui实现源码与立项流程
在数字化时代,采购管理也正经历着前所未有的变革。全过程数字化采购管理成为了企业追求高效、透明和规范的关键。该系统通过Spring Cloud、Spring Boot2、Mybatis等先进技术,打造了从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通过…...
ChatGPT 有什么新奇的使用方式?
来看看 OpenAI 内部是如何使用 ChatGPT 的。 目前(4月29日)距离ChatGPT发布了已经半年,这期间大家基本上把能想到的ChatGPT的使用方法都研究遍了——从写作、写代码,到翻译、英语润色,再到角色扮演等等。 所以&#x…...
【计算机四级(网络工程师)笔记】操作系统概论
目录 一、OS的概念 1.1OS的定义 1.2OS的特征 1.2.1并发性 1.2.2共享性 1.2.3随机性 1.3研究OS的观点 1.3.1软件的观点 1.3.2资源管理器的观点 1.3.3进程的观点 1.3.4虚拟机的观点 1.3.5服务提供者的观点 二、OS的分类 2.1批处理操作系统 2.2分时操作系统 2.3实时操作系统 2.4嵌…...
LeetCode算法练习top100:(10)贪心算法
package top100.贪心算法;import java.util.ArrayList; import java.util.List;public class TOP {//121. 买卖股票的最佳时机public int maxProfit(int[] prices) {int res 0, min prices[0];for (int i 1; i < prices.length; i) {if (prices[i] < min) {min price…...
随记-探究 OpenApi 的加密方式
open api 主要参数如下 appKey 接口Key(app id)appSecret 接口密钥timeStamp 时间戳 毫秒nonceStr 随机字符串signature 加密字符串 客户端 使用 appSecret 按照一定规则将 appKey timeStamp nonceStr 进行加密,得到密文 signature将 appK…...
stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发
stm32学习总结:4、Proteus8STM32CubeMXMDK仿真串口收发 文章目录 stm32学习总结:4、Proteus8STM32CubeMXMDK仿真串口收发一、前言二、资料收集三、STM32CubeMX配置串口1、配置开启USART12、设置usart中断优先级3、配置外设独立生成.c和.h 四、MDK串口收发…...
配置paddleocr及paddlepaddle解决报错 GLIBCXX_3.4.30 FreeTypeFont
配置 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/StyleText/README_ch.md#style-text 环境配置 https://www.paddlepaddle.org.cn/ 根据自己的cuda版本选择paddlepaddle-gpu # 新建conda环境 # python version conda create -n paddle python3.8 # 安装p…...
【实战】如何在Docker Image中轻松运行MySQL
定义 使用Docker运行MySQL有许多优势。它允许数据库程序和数据分离,增强了数据的安全性和可靠性。Docker Image的轻便性简化了MySQL的部署和迁移,而Docker的资源隔离功能确保了应用程序之间无冲突。结合中间件和容器化系统,Docker为MySQL提供…...
PLC物联网,实现工厂设备数据采集
随着工业4.0时代的到来,物联网技术在工厂设备管理领域的应用日益普及。作为物联网技术的重要一环,PLC物联网为工厂设备数据采集带来了前所未有的便捷和高效。本文将围绕“PLC物联网,实现工厂设备数据采集”这一主题,探讨PLC物联网…...
npm安装依赖报错ERESOLVE unable to resolve dependency tree(我是在taro项目中)(node、npm 版本问题)
换了电脑之后新电脑安装包出错 👇👇👇 npm install 安装包报错 ERESOLVE unable to resolve dependency tree 百度后尝试使用 npm install --force 还是报错 参考 有人说是 node 版本和 npm 版本的问题 参考 新电脑 node版本:16.1…...
Maven仓库上传jar和mvn命令汇总
目录 导入远程仓库 命令结构 命令解释 项目pom 输入执行 本地仓库导入 命令格式 命令解释 Maven命令汇总 mvn 参数 mvn常用命令 web项目相关命令 导入远程仓库 命令结构 mvn deploy:deploy-file -Dfilejar包完整名称 -DgroupIdpom文件中引用的groupId名 -Dartifa…...
Jenkins 执行远程脚本的插件—SSH2 Easy
SSH2 Easy 是什么? SSH2 Easy 是一个 Jenkins 插件,它用于在 Jenkins 构建过程中通过 SSH2 协议与远程服务器进行交互。通过该插件,用户可以在 Jenkins 的构建过程中执行远程命令、上传或下载文件、管理远程服务器等操作。 以下是 SSH2 Eas…...
Starting the Docker Engine...一直转圈
出现的问题: 原因排查: 看了网上的很多篇文章,每个原因都排查了,没有发现问题。 遇到这样的情况应先看自己是否安装成功 打开运行,在空框中输入powershell并点击确定: docker version 显示版本证明安装…...
关于Python里xlwings库对Excel表格的操作(十五)
这篇小笔记主要记录如何【获取单元格数据的对齐方式或更改单元格数据的对齐方式】。 前面的小笔记已整理成目录,可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 (1)如何安装导入xlwings库; …...
[Linux] LVS+Keepalived高可用集群部署
一、Keepalived实现原理 1.1 高可用方案 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色…...
【版本管理】git stash用法
应用场景 我们在开发过程中可能会遇到这样的情况: 想从A分支切换到B分支,但A分支尚未改完,暂时不想提交代码 此时可以在切换到B分支前,先通过stash指令来缓存本地改动,等切回A分支时,再通过stash还原改动…...
声明式的理解【gpt】
一 MyBatis采用了声明式语法来进行SQL映射配置【mybatis声明式】 MyBatis是一款优秀的持久层框架,支持自定义SQL、存储过程以及高级映射,使得开发人员能够专注于SQL本身而不是数据库访问。MyBatis提供了两种配置方式:XML配置和注解配置&…...
提高Spring Boot技能的9种方法
以下是提高 Spring Boot 技能的 9 种方法: 1. 外部化您的配置: 充分利用 Spring Boot 潜力的另一种方法是尽可能地尝试外部化您的配置,而不是对其进行硬编码。外部化您的配置将使您的应用程序更加灵活且更易于管理。 外部化配置的另一个优点…...
HIVE基本操作
1、启动远程服务端:hive --service metastore启动(这里是阻塞式),然后在客户端操作 2、Hive DDL(数据库定义语言) --展示所有数据库show databases; --切换数据库use database_name; 3、创建语法&#x…...
怎么用手机做网站/网站排名推广工具
MSYS:Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等。是Windows下最优秀的GNU环境。(是否厌倦了Cygwin蜗牛般的shell环境,试试MSYS中的rxvt吧&…...
五河网站建设哪家好/整站排名
什么是TimelineView 更紧凑的TimelineView定义 与样式类似,SwiftUI 团队正在推动我们为新的TimelineView. 从 Xcode 13b3 开始,这会生成弃用警告: TimelineView(EveryMinuteTimelineSchedule()) { context inText(context.date.descriptio…...
有哪些图片设计网站有哪些问题/百度推广登录入口登录
目录PLL1和PLL1控制器PLL2和PLL2控制器CSL的使用本文主要介绍TMS320C6455的时钟相关的内容,参考文档为: SPRS276M - TMS320C6455 Fixed-Point Digital Signal ProcessorSPRUE56 - TMS320C645x DSP Software-Programmable Phase-Locked Loop (PLL) Contr…...
网站设计深圳哪家强?/alexa排名查询统计
本文纯为大家好好学习Ajax Controltoolkit而写,有不到之处希望大家提出,以免遗祸 众人 标签零 标签一 标签二 标签三 1 11 111 1111 11111 2 22 222 2222 22222 3 33 333 3333 33333 4 44 444 4444 44444 运行结果: 在这显示结果 容器部分属性方法 标签属性方法 ps:如从官方下…...
国外推广国内网站/公司网页制作
前言 今天模拟赛T1二分图匹配板子题,但是我不会,于是就全场就我没AT1系列了,赶紧补坑 算法 主要了解两个概念"交替路","增广路".我们所做的就是不断找增广路.图我太懒不想画...推荐一个我认为写的很好的一篇博客,我就是在这学的 https://www.renfei.org/bl…...
做美食网站的意义/互动营销经典案例
Scrum一直以来争论不断。虽然创始人Ken在演讲中曾说过即使是白痴也可以用Scrum,但是依然有很多人认为Scrum对团队成员的素质要求非常高。另据统计,75%以上的Scrum都可以称得上失败。 去年十月,有幸参加了Outsofting鲍央舟老师的Scrum培训。培…...