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

网站开发可以自学吗给周杰伦做网站

网站开发可以自学吗,给周杰伦做网站,在哪个网站上可以学做衣服,做英语趣味教具的网站大家好,我是蓝胖子,我认为自动化运维要做的事情就是把运维过程中的某些步骤流程化,代码化,这样在以后执行类似的操作的时候就可以解放双手了,让程序自动完成。避免出错,Ansible就是这方面非常好用的工具。它…

大家好,我是蓝胖子,我认为自动化运维要做的事情就是把运维过程中的某些步骤流程化,代码化,这样在以后执行类似的操作的时候就可以解放双手了,让程序自动完成。避免出错,Ansible就是这方面非常好用的工具。它能将我们的安装软件,部署等过程进行代码编排,程序化我们的部署步骤。今天,我们就来看看它的工作模式以及编排的语法规则。

架构介绍

Ansible 与主机之间沟通的模式是通过ssh协议,执行相关的命令。这其中涉及到Ansible 的组成架构的问题,学习一门技术或工具首先得对它的架构有所了解。 我们来看看Ansible的组成架构是什么样的。

组成架构

inventory主机清单

inventory清单定义了 Ansible 要管理的主机,当执行Ansible 任务时,需要指定主机清单,默认的主机清单配置是在/etc/ansible/hosts 里,执行命令的时候也可以通过-i 参数指定主机清单的位置。

主机清单的配置文件是INI格式的文件,如下所示, 我配置了一个叫test的机器组,它又两个机器,分别是159.138.99.123,159.138.99.121,同时可以通过[组名:vars]的形式在下面定义特点组名的变量,下面👇🏻 示例的配置文件 我就定义了两个变量ansible_ssh_private_key_file代表连接服务器时使用的密钥的位置,ansible_ssh_user代表连接服务器时的用户名。

[test]  
159.138.99.123
159.138.99.121
[test:vars]  
ansible_ssh_private_key_file=/Users/xiongchuanhong/.ssh/id_rsa  
ansible_ssh_user=webserver

inventory 中的常用变量如下:

ansible_ssh_port: //定义连接主机的ssh端口 
ansible_ssh_user: //定义连接到该主机的ssh用户 
ansible_ssh_pass: //定义连接到该主机的ssh密码 
ansible_sudo_pass: //定义sudo的密码 
ansible_connection: //定义ansibles的连接类型,可以是local、ssh或paramiko ansible_ssh_private_key_file: //定义私钥文件路径

平时使用inventory组件时,我们可以在一个文件夹下创建不同的机器组,如下,我创建了一个hosts文件夹,并且新建了两个文件分别存放 生产环境的机器组和测试环境的机器组。文件的格式是INI格式。

(base) ➜  hosts tree .
.
├── prod
└── test

接着我们可以使用如下命令测试定义的机器组是否有效,-i 后接文件名或文件夹名,然后是机器组的名称,这里是test。如果inventory配置正确,那么会出现对应机器组的ip。

(base) ➜  hosts ansible -i test   test  --list-hostshosts (1):159.138.99.123159.138.99.121
Ansible 核心组件

我将Ad-hoc组件和playbook,role这些组件都称为核心组件,因为它们对部署任务的编排有非常紧密的联系。在后面我会介绍它们比较详细的语法,这里就简单的提及一下它们之间的区别。

Ad-hoc 命令是直接使用命令行来执行Ansible的任务,命令行也能使用Ansible的模块,如下Ad-hoc命令 使用copy模块复制文件,-m 后面跟的是模块名称,-a后面跟的是模块需要执行的命令。

ansible <机器组名称> -m copy -a "src=/path/to/local/file dest=/path/to/remote/file" 

📢📢 注意下,这里说的组件和模块的区别,在Ansible中封装了很多模块来方便我们完成对应的功能,可以用ansible-doc -l 去查看一共有哪些模块,关于模块的用法可以查看文档https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#plugins-in-ansible-builtin 文档记录了ansible内置的模块已经用法。

playbook 适用于完成一些复杂的配置部署任务,虽然Ad-hoc能完成部分配置任务,但毕竟是命令行,playbook可以将配置任务文档化。如下通过在一个yaml文件里定义任务的执行步骤,然后用ansible-playbook 命令便可以执行site.yml 里配置的任务了。-i参数指定了inventory主机清单的位置。关于playbook的yml文件的语法会在接下来语法介绍时详细阐述。

ansible-playbook site.yml -i hosts/prolinkbox

role 组件针对于playbook编排任务的方式就更进一步,如果有很多不同业务需要编排部署任务,就会产生很多playbook的yml文件,不好维护。所以通过role组件定义了一些固定的目录规范存放任务相关的文件,涉及到任务编排的yml语法和playbook类似,基本没有变动。

各种插件

除了上述提到的组件外,Ansible还有很多插件来让Ansible额外完成某些功能,比如日志,邮件功能,另外,Ansible默认的连接主机的方式是ssh,可以通过连接插件来来支持其他的连接方式。

至此,大致介绍了完了Ansible的组成架构,接着我们详细看下Ansible编排任务的语法是怎么样的,了解了语法后,便可以自己编写Ansible的任务了。

语法介绍

Ad-hoc临时命令模式

虽然我是极力建议使用Ansible编写对线上服务的部署任务时,尽量采用playbook方式,这样能文档化任务。但是一些简单的命令又想批量的在主机上运行,还是可以用到Ad-hoc方式执行。

我们简单的看看其使用规则,-m 参数 指定使用的模块,-a 参数指定模块使用到的命令。举几个简单的例子,

使用了shell模块,输出test机器组中每个linux服务器的主机名

(base) ➜  boxdev ansible  -i hosts test -m shell -a 'hostname'  
159.138.99.123 | CHANGED | rc=0 >>
hw-sg1-test-0001

使用了copy模块将本地的ReadMe.md 文件复制到了远程

(base) ➜  boxdev ansible  -i hosts test -m copy  -a "dest=./ReadMe.md mode=600  src=./ReadMe.md" 159.138.99.123 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": true,"checksum": "73072172dcf3a9e8fd75b72a96d859240c65a26f","dest": "./ReadMe.md","gid": 1001,"group": "nemo","mode": "0600","owner": "webserver","path": "./ReadMe.md","size": 119,"state": "file","uid": 1002
}

Ad-hoc 的使用十分简单,关键都是要掌握Ansible中有哪些模块,各个模块能有哪些参数,具体参考文档 https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#plugins-in-ansible-builtin

playbook编排模式

接下来,来看下playbook使用yml编排任务时的语法规则。如下是一个yml的示例文件,

---
- hosts: alltasks:- name: Install Nginx Packageyum: name=nginx state=present- name: Copy Nginx.conftemplate: src=./nginx.conf.j2 dest=/etc/nginx/nginx.conf
owner=root group=root mode=0644 validate=' nginx -t -c %s'notify:- ReStart Nginx Servicehandlers:- name: ReStart Nginx Serviceservice: name=nginx state=restarted

上面这个文件足以介绍playbook的基础语法了首先hosts代表使用到的机器组,all代表主机清单上全部的机器组。

tasks下面定义的是Ansible需要执行的任务,name代表人物的名称,接着就是Ansible的一些模块,像上面例子中就用到了yum模块,template模块。模块的用法以及需要定义哪些参数和使用Ad-hoc命令时一致。

在任务后面还可以跟notify 配置,它代表在该任务完成后可以执行的额外操作,操作定义在handlers里,如上面例子那样,在Copy Nginx.conf任务完成后,执行了ReStart Nginx Service的handler,这个handler被定义在下面handlers的配置里,也是引用Ansible的模块的方式,使用了service模块启动nginx服务。

总结

你可以发现,其实用上Ansible并不难,关键就是熟练的掌握各种模块的用法,无她,唯手熟尔。关于playbook的语法还涉及到参数定义,role模式的写法,这些详细的语法会放到后面的章节在继续讲解,这一节先简单的知道Ansible是个什么东西,能看懂很简单的playbook配置文件即可。

http://www.yayakq.cn/news/881134/

相关文章:

  • 网站怎么做弹窗网站设计与开发期末考试题
  • 如何制作自己的网站 可放广告wordpress横向导航
  • 衡水市住房和城乡建设局网站阿里云服务器可以做彩票网站吗
  • 合肥生态丽景网站建设网页设计师考试
  • 阜阳网站开发自己做一个网站一年的费用
  • 长沙制作公园仿竹围栏哪家便宜常州网站制作优化
  • 徐州网站建设哪家专业在线做六级阅读网站
  • 福建福清市住房和建设局网站外贸做中英文网站
  • 医院网站解决方案微商代运营
  • 网站的建设特色WordPress小程序论坛
  • 彩投网站建设中英文切换网站开发
  • 网站建设怎么谈wordpress设置收费下载
  • wap网站域名申请wordpress 首页显示全文
  • 黄岩城市建设发展集团网站wordpress页面背景图片
  • php网站开发发展趋势wordpress html 单页
  • 做彩票网站技术网站对域名
  • 外边做一个网站要多少钱百度网站抓取时间查询
  • 网站建设又叫什么专业营销网站开发
  • 湛江市律师网站建设品牌北京市基础建设质量监督局网站
  • 制造网站开发教学网站模板
  • 石碣镇网站仿做网站建设公司代理商
  • 坪山网站建设流程检测WordPress网站的安全性
  • 服务网站设计案例住建网是个什么网站
  • 阳西网站seo网站生成wap
  • 汉滨区建设局网网站做网站购买服务器多少钱
  • 自己可以做电子商务网站sem 优化价格
  • 建设外贸网站咸阳佰亿网络工程有限公司
  • 站内推广和站外推广的区别想开发自己的网站
  • 莘县网站建设电话公司网站的服务费做哪个科目
  • 深圳企业网站制作公司哪家好admin后台管理系统