ansible--部署jdk以及zookeeper集群

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: ansible--部署jdk以及zookeeper集群

640.gif

昨天我们用ansible做了服务器互信,其中的动作比较少,也没有太多的变量,那么我们就都写到一个playbook当中了。


今天我们稍微复杂一点,希望大家还能跟着波哥思路走。

先看一下波哥的ansible结构:

640.jpg

我们yum安装完ansible不会有这么多目录,你们需要自己创建

files:放我们的安装介质。

hosts:写我们的nodes配置信息。


里面的内容:

640.jpg


roles:这个目录下面放一些我们需要自行动作的一些独特的配置。          templates:目录是放一些活动性的配置文件。          vars:看名字就应该知道了,就是放变量的。work_yml:是我们的入口文件存放的位置,一般我们会再这里写playbook,然后其中有些变量是要到上面各个目录上去找和加载的,只要我们指定了相应的文件就行。目录介绍完了,我们脑袋里可能有个大概的印象了。


别蒙圈奥!咱们再总结一下奥:1、hosts,配置服务器信息,以及跟服务器相关的变量。

2、files,存放安装介质。3、roles,放应用里面的独特配置的目录4、work_yml,编写主流程的文件目录OK!我们先看jdk先看主流程文件:

640.png


波哥主要提几个比较经典的配置:


- hosts: "{{host}}"
gather_facts: false
remote_user: root
ignore_errors: yes


这段里面的第一个"{{host}}",他的作用是让我们再执行playbook的时候可以更灵活的指定服务器组。当然我们也可以写死到底是哪个组要执行这个剧本。如果像波哥这么写呢?就可以在执行的时候通过-e选项带入分组变量,这个也是我们再生产中比较常用的配置,例如我CI一侧jenkins在构建完后需要推送的时候,就可以配置这个参数test,deploy等等分组,带入到固定的剧本中执行。我们只需要修改hosts文件中的分组即可。


ansible-playbook jdk8.yml -e "host=jdk8"


参照波哥开篇截图的hosts文件内容就明白了。

脚本里面波哥用到了一个循环,是的,ansible的流程控制是少不了的。


- name: set env  #设置环境变量
      lineinfile: dest=/etc/profile insertafter="{{item.position}}" line="{{item.value}}" state=present
      with_items:
        - {position: EOF, value: "export JAVA_HOME={{BigdataDir}}/jdk1.8.0_241"}
        - {position: EOF, value: "export PATH=$JAVA_HOME/bin:$PATH"}


像这样的东西波哥就提一嘴,我相信你们能看懂。稍微了解过前端的兄弟都应该听过j2模板,他们引用变量的模式就是这个{{变量}} 在两个大括号中传递变量。当我们在roles:中指定了相应的名称,那么ansible就会到相应目录下去找对应的变量。例如我们的{{BigdataDir}}这个变量就在roles\jdk8\vars\main.yml中配置的。


BigdataDir: /opt/hzgc
AnsibleDir: /etc/ansible

为什么这个变量要在这里配置?回忆一下波哥的上段总结。这个jdk我们就过了奥,等会你们自己仔细看看文件配置体会一下。


第二个:zookeeper这个相对于之前的可能还有点别的东西,那就是修改配置文件。

640.png


这个剧本稍微比上一个步骤长一点。波哥在剧本的一开始就全局的变量定义,这个写这也是为了告诉大家,这里也可以定义变量,大家注意看这段:


 vars: 
    - AnsibleDir: /etc/ansible 
    - zookeeperVersion: apache-zookeeper-3.5.7-bin
    - JAVAHOME: /opt/hzgc/jdk1.8.0_241

而在核心剧本中我们定义了两个template这个动作,那么大家心里就应该知道了,这个应该就是配置zookeeper的文件了。


    - name: install configuration file for zookeeper
template: src={{AnsibleDir}}/roles/zookeeper/templates/zoo.cfg.j2 dest={{BigdataDir}}/{{zookeeperVersion}}/conf/zoo.cfg
    - name: add myid file
      shell: echo {{ myid }} > {{BigdataDir}}/{{zookeeperVersion}}/data/myid
    - name: aotu start zookeeper
template: src={{AnsibleDir}}/roles/zookeeper/templates/zookeeper.j2 dest=/etc/init.d/zookeeper


下面这个是波哥配置开机自启动定义模板。其实和简单,就是把对应的文件推送到指定的位置。当然,文件的内容是需要跟进变量替换的哦!

我们去看看模板是什么样子的


ansible\roles\zookeeper\templates

640.png

玩过zookeeper的应该都了解这个配置文件了吧。固定的格式,不一样的变量就是模板文件的作用。我们再去看看如何定义zookeeper变量的呢?

cat /etc/ansible/roles/zookeeper/vars/main.yml
server1_hostname: 192.168.1.117
server2_hostname: 192.168.1.118
server3_hostname: 192.168.1.119
BigdataDir: /opt/hzgc

再看看上面的模板文件,是不是有点头绪啦?哈哈哈!playbook是不是超级简单?

那么有心人应该觉察到了,全局没看到其中一个变量在哪定义的。


   - name: add myid file
      shell: echo {{ myid }} > {{BigdataDir}}/{{zookeeperVersion}}/data/myid

这里面的{{ myid }} 在哪?全局变量没看见,我们的roles下面配置也没看见?这事什么情况?

还记得波哥说的嘛?关于服务器的变量我们在hosts文件中定义就可以啦

640.png


嗯,就这里!可能波哥之前写的shell脚本我们只需关注base.config配置就行了。改完执行就OK了,但是ansible需要大家配置很多地方,软件还需要自己下载等等一些列动作,但是没办法,这个东西比较早。


等波哥牛X了,让所有人都习惯咱们的东西。但是现在波哥不行啊,咱们得学通用的东西,费劲也得学奥!


ansible相对开发难度小,你们看看波哥之前写的互信脚本的代码量,再比比咱们上一边推的互信demo。就知道了。


自己写脚本和用ansible都忽悠利弊吧!大家可以看情况来决定。


对ansible感兴趣,想要学习的朋友可以关注公众号后回复:zookeeper 获取上面两个playbook,files文件里的安装包波哥没传,比较大。你们自己下载去!


不知不觉写了这么多东西,希望能让大家能有点小小收获吧!


PS:多说一句奥:我们上次出的openvpn脚本,有不少朋友都在用,但是波哥在添加脚本中多注释了一行。如果你们想添加完key,直接把配置文件下载到你本机的话,去掉这行注释就可以了。


添加脚本核心文件的第65行


sz /data/openvpn/conf/$Persons.ovpn

这个前面的注释符去掉保存即可,当然,如果你不愿意弄可以重新下载波哥的脚本,因为我已经改好了。

好了就这样吧,大家在使用过程中有什么错误可以发到后台,我看到后会立即改正。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
24天前
|
存储 数据安全/隐私保护 Docker
Kolla-ansible部署openStack
Kolla-ansible部署openStack
114 11
|
19天前
|
运维 安全 测试技术
自动化运维的利剑:Ansible在企业级部署中的应用与挑战
本文深入探讨了Ansible,这一领先的IT自动化工具,如何在企业级部署中扮演关键角色。我们将通过实际案例分析,揭示Ansible在简化配置管理、加速应用部署和提高运维效率方面的优势。同时,文章也将不回避Ansible实施过程中可能遇到的技术挑战与限制,并提供针对性的解决策略。阅读本文后,您将获得一个全面的视角,理解Ansible在现代企业运维中不可或缺的地位,以及如何克服其面临的主要问题。
27 1
|
23天前
|
存储 数据库
zookeeper 集群环境搭建及集群选举及数据同步机制
zookeeper 集群环境搭建及集群选举及数据同步机制
30 2
|
12天前
|
开发工具
部署安装zookeeper集群
部署安装zookeeper集群
|
2月前
|
Oracle Java 关系型数据库
玩客云安装Armbian和部署jdk环境
该文介绍了在玩客云设备上安装Armbian系统和Java SDK的步骤。首先,需要准备玩客云设备、Armbian镜像文件和USB工具。然后,通过短接点刷入Armbian系统,并通过SSH访问。接着,从可信源下载Java SDK,将其解压并移动到合适目录,编辑环境变量使其生效。最后验证Java安装成功。注意选择兼容版本并备份数据。内容涵盖了ROM开发相关技术。
|
2月前
|
Java 网络安全
分布式系统详解--框架(Zookeeper-简介和集群搭建)
分布式系统详解--框架(Zookeeper-简介和集群搭建)
118 0
|
2月前
|
Java Linux
杨校老师课堂之CentOS7部署开发环境Jdk1.8【Linux】
杨校老师课堂之CentOS7部署开发环境Jdk1.8【Linux】
44 0
|
3月前
|
消息中间件 Kafka
Kafka【部署 03】Zookeeper与Kafka自动部署脚本
【4月更文挑战第11天】Kafka【部署 03】Zookeeper与Kafka自动部署脚本
48 8
|
3月前
|
存储 Java 网络安全
ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
【4月更文挑战第10天】ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
61 1
|
3月前
|
架构师 Shell Apache
Zookeeper集群搭建
Zookeeper集群搭建