最近在学习ansible,先大致看了下视频,现在需要练习使用了 。对照视频中的练习方式,我觉得用处也不是太大,正好现在还要学习elk,以集群方式部署es,需要执行一些批量命令,而且还有一些修改配置文件的步骤,需要对每台主机操作 。故此,尝试结合ansible的学习,让安装更加的自动化,有以下思路 。说明一下,有些方案其实ansible也能执行,但感觉必要性不是特别的大 。
1,es不能使用root用户启动es不能使用root用户启动,故需要主机上创建普通的用户,给普通用户sudo免密权限,visudo命令,在root ALL=(ALL) ALL这行下添加,内容是把以上root改成普通用户,最后的ALL换成NOPASSWD:ALL 。实际工作中,如果以openstack等方式,需要es主机的话,自动创建好普通es用户,该要的权限也都可以添加好 。最好后面部署的时候,不使用sudo的方式,我自己的练习用户是wenwen,所有部署目录都在/home/wenwen下,以后会尝试把用户做成变量,另外一些主机ip和目录的配置,也尽量做成变量,以便支持web平台的相关操作 。
2,使用VMware练习,要准备四台虚拟机如果是使用VMware练习,准备四台虚拟机 。ansible功能大多依赖python,如果是centos7以上,默认安装python,不用再装了 。然后选择一台,安装ansible,其余的不用,这是ansible方便的地方 。安装ansible的主机,我喜欢称之为跳板机或者堡垒机,后面都称为跳板机 。为什么呢,因为即使ansible执行后,输入远程主机密码会保存会话,下次不用再输入了,但万一远程主机密码修改或会话失效呢,还要重新来 。而设置免密登录,以rsa方式认证,则大致能避免这个问题 。免密登录配置方式,可以参考别人的博客,https://www.cnblogs.com/276815076/p/10449354.html#5113218,里面有一些我遇到坑时的解决方式 。我推测如果有openstack方式,则连免密登录配置都不用手动做了,跳板机上生成的公钥,当作openstack的一个变量应用于初始机器的authorized_key了,方便很多 。这只是我的一种思路,实际上如果是使用密码,ansible也是支持把账号密码写到/etc/ansible/hosts里的,如下方法一 主机+端口+密码[webserver]192.168.1.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"方法二 主机+端口+密码[webserver]192.168.1.3[1:3][webserver:vars]ansible_ssh_pass="123456"
3,ansible执行时sudo的用户是普通用户还是root用户ansible在远程主机上执行时,可能会需要一些root权限,一般编写playbook会将remote_user设置为root,以下选项不用开启也可以,但是remote_user为root,就需要给root加免密登录了 。我不想做root的免密,就让remoter_user为我自己的wenwen用户,然后开启以下的配置 。修改ansible安装目录的ansible.cfg文件,以下配置开启[privilege_escalation]become=True***//使用“true”或“yes”来表示启用这个特权,如:become=true表示打开了become开关 。become_method=sudo *//********表示用什么方式将普通账户切换到root或所需的其他账户,这里可以用su或sudo 。*#become_user=root *//********设置为root账户,相当于我们以普通账户登入到远程主机时,再使用su - root切换为root账户 。*#become_ask_pass=False*//表示询问密码*
4,开始编写创建roles和playbook每个软件的安装都是一个role,在roles目录下,创建以下目录,刚创建的目录中再创建task,vars,handle,templates等,安装的role有以下:install-openjdk-epel-npm-unzip-nodejs-bzip2 这是一些需要yum的安装,需要将上面3中提到的sudo用户为root,使用我的wenwen用户就提示不让,也不知道为啥,明明给wenwen配置了所有root权限了,可能还是有些地方普通用户还是没有配好吧 。install-es 使用wenwen用户安装es和es-head,但是es-head的运行放到一个单独的playbook中了,因为可能需要sudo用户为root,后面再提 。install-kibana,使用wenwen用户安装kibana并运行,需要es安装好并且es的全部节点都启动成功了 。install-logstash ,使用wenwen用户安装logstash并运行,配置的logstash.conf的output为es,也需要es节点都启动成功 。注意事项:install-es中还有一个修改系统配置文件的步骤,是需要root用户执行的,yml文件是task下的modifysys.yml,这个修改也太清楚作用,因为这个编写是用echo追加文件的方式,卸载elk里如果删除这几个配置的话,担心影响其它非elk软件的使用,所以如果确认主机上没有配置过,则可以去掉修改main.yml中的注释安装,执行后,再加上注释 。不然下次安装,就重复添加了 。es-playbook 这是es-head的启动需要的playbook,没有做成role方式,为了不混淆安装卸载的role,将npm运行拆分出来了,和roles目录平级 。里面是一个playbook的yml文件,第一次执行需要sudo为root用户,后面可以为普通用户,启动的的命令配置的nohup输出为/dev/null,我若配置到输出文件中,就不能正常启动,是不是因为输出到文件中的问题也不清楚,就只好按照能启动成功的方式来写了 。卸载的role:uninstall-elk 停止进程,删除目录,移除yum的一些组件,如openjdk,npm等,同样存在卸载风险,一些工具如jdk,可能非elk的软件也在用,卸载的话,就得不偿失了 。把卸载依赖软件的部分在main.yml文件中注释了,保留了停止进程和删除目录的步骤,并打了tags,这样可以有选择的执行停止elk某个组件进程或者删除目录 。如果需要卸载依赖软件,需要使用root用户 。
经验总结扩展阅读
- Redis 01: 非关系型数据库 + 配置Redis
- 小暑的谚语有哪些 24节气对应谚语各一句
- MassTransit | .NET 分布式应用框架
- sql语法巧用之not取反
- 少女前线纵向应变查拉图斯特拉如是说怎么通关
- 2023年10月2日应聘吉日一览表 2023年10月2日应聘行吗
- 2022年11月份节气到小雪是什么天气 2022冬天小雪气温黑白应该是多少温度
- iphone手机怎么强制重启(iphone强制重启无反应)
- 牛奶和可乐的化学反应
- 泡沫灭火器应该放在高温的地方吗