自动化运维-使用Shell脚本简单实现

回顾:

1   安装etcd

[[email protected] ~]# pip install python-etcd                                                       安装etcd软件

2   修改salt-master的配置文件,加配置,并重新启动salt-master

[[email protected] ~]# vim /etc/salt/master

etcd_pillar_config:

etcd.host: 10.0.0.7

etcd.port: 4001

ext_pillar:

- etcd: etcd_pillar_config root=/salt/haproxy/

3   添加节点

[[email protected] ~]# curl -s http://10.0.0.7:2379/v2/keys/salt/haproxy/backend_www_oldboyedu_com/web-node4 -XPUT -d value="10.0.0.7:8080" | python -m json.tool

4   改haproxy-outside.sls文件添加jinja模版标志

[[email protected] ~]# vim /srv/salt/prod/cluster/haproxy-outside.sls

- template: jinja

5   修改配置文件

[[email protected] ~]# vim /srv/salt/prod/cluster/files/haproxy-outside.cfg

{% for web,web_ip in pillar.backend_www_oldboyedu_com.iteritems() -%}

server {{ web }} {{ web_ip }} check inter 2000 rise 30 fall 15

{% endfor %}

脚本实现自动添加机器:

[[email protected] ~]# cat auto.sh

#!/bin/bash

MAIN_ADD_HOST=$1

create_host(){

echo "create host ok"

}

deploy_service(){

#salt ‘linux-node2.example.com‘ state.sls nginx.install env=prod

ADD_HOST_PORT="8080"

}

deploy_code(){

echo "deploy code ok"

}

service_check(){

STATUS=$(curl -s --head http://"$ADD_HOST":"$ADD_HOST_PORT"/ | grep ‘200 OK‘)

if [ -n "$STATUS" ];then

echo "ok"

else

echo "not ok"

exit

fi

}

etcd_key(){

ADD_HOST=$1

curl http://10.0.0.7:2379/v2/keys/salt/haproxy/backend_www_oldboyedu_com/$ADD_HOST -XPUT -d value="10.0.0.8:${ADD_HOST_PORT}"

}

sync_state(){

salt ‘linux-node1.example.com‘ state.sls cluster.haproxy-outside env=prod

}

main(){

create_host;

deploy_service;

deploy_code;

etcd_key $MAIN_ADD_HOST;

sync_state;

}

main $1

老男孩网址:http://www.etiantian.org

qq:406564728

欢迎交流

时间: 2024-10-06 14:30:40

自动化运维-使用Shell脚本简单实现的相关文章

linux运维学习shell脚本监控nginx服务

菜鸟学习shell脚本后,动手练手简单小实验,使用shell脚本判断nginx是否正常运行,如果没有运行将nginx服务启动起来. 一.基于进程判断 1.获取nginx进程来判断该服务是否正常启动. ps -ef | grep nginx | grep -v grep | wc -l    输出进程行数 然后判断是否为2 如果不是说明该服务没有启动. grep -v grep  用来排除掉您所使用grep产生的进程. 2.shell 脚本编写 先定义一个变量Web #!/bin/bash Web

自动化运维工具ansible的简单使用

准备两台机器,一台作为服务端,一台作为客户端 1.在其中一台服务端上安装ansible [[email protected] ~]# yum install -y epel-release [[email protected] ~]# yum install -y ansible 2.配置密钥 在服务端生成密钥对: [[email protected] ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file

日常运维工作shell脚本案例

1.list_sys_status.sh显示系统使用的以下信息:主机名.IP地址.子网掩码.网关.DNS服务器IP地址信息 #!/bin/bashIP=`ifconfig eth0 | head -2 | tail -1 | awk '{print $2}' | awk -F":" '{print $2}'`ZW=` ifconfig eth0 | head -2 | tail -1 | awk '{print $3}' | awk -F":" '{print $2

自动化运维Ansible批量部署服务+shell脚本批量推送公钥

一.概述分析 由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下.这时,部署自动化运维就可以尽可能安全.高效地完成这些工作.一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的ABem程序来完成管理功能,如: Puppet.Func. Zabbix等:另外一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,如: Ansible. Fabric等. - 下面介绍几款功能类似的自动化运

手游公司运维之利用Rundeck自动化运维工具和Shell脚本构建测试环境代码发布平台和生产环境代码发布平台

在做手游运维工作之前,我接触的代码发布都是常规的软件发布,有固定的发布周期.之前工作的那个外企有严格的发布周期,一年中的所有发布计划都是由Release Manager来控制,每次发布之前都需要做一些准备工作,如填写发布表单,上传发布需要的资源文件,联系发布过程中的相关人员,如开发和测试.最后在公司内部开发的发布平台上按照指定的时间点击鼠标对一个集群内的几台主机或全部主机进行代码发布.这个发布平台还是基于rsync服务实现的.虽然每个星期都有各种服务的发布,但是整个发布流程是可以控制的,并且发布

简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环)

简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环) http://www.cnblogs.com/M18-BlankBox/p/5881700.html

运维与自动化系列③自动化部署基础与shell脚本实现

自动化部署基础与shell脚本实现 关于自动化的基础知识: 1.1:当前代码部署的实现方式: 运维纯手工scp到web服务器纯手工登录git服务器执行git pull或svn服务器执行svn update更新代码通过xftp上传代码开发打压缩包上传到服务器然后解压 缺点:1.需要运维全程参与,占用大量的工作时间2.上线时间比较慢3.人为造成的失误较多,管理比较混乱4.回滚复杂而且慢,还不及时 1.2:运行环境规划:开发环境:开发者本地有自己的环境,然后运维需要设置开发环境的公用服务,例如开发数据

自动化运维工具之ansible的简单应用

ansible: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,例如shell,copy,ping等,ansible只是提供一种框架.ansible的主要特性: 模块化:调用特定的模块,完成特定任务 基于Python语言实现,由Pa

自动化运维工具Ansible架构部署应用及playbooks简单应用

在日常服务器运维中,我们经常要配置相同的服务器配置,前期我们都是一台一台的去配置,这种方法操作主要应对于服务器数量不多且配置简单的情况还可以继续这样操作,如果我们后期维护几百服务器或者几万服务器呢? 我应该怎样去快速配置服务器呢?如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作同时也增加服务器配置的异常,至此自动化运维工具解决我们的瓶颈---Ansible工具. Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng