为什么要创建这个tools工具箱?将重复繁杂的事务/操作疏理出来形成脚本提升效率.
运维自动化的重点在于标准化,日常事务能不能疏理出来形成流程化脚本化,要看标准化制定得如何.
Docker可能是近年最火的技术了,容器从很高的视角,审视/解决了运维困境,让运行环境可以所需即所得.
此脚本的用途:获取主要城市,四星级酒店标间含双早的平均参考价(元/间/夜).
要查询的城市是由业务部门提供,一行一城市名称,存放在./city_name.txt文件.
这其中涉及到查询mysql操作,查询elasticsearch操作.
查询mysql操作是为了拿到各个城市对应的城市代码,然后根据城市代码去查询elasticsearch,得到平均参考价.
使用帮助:
./st_hotel_avg_price.sh [code|price|clear]
1 一行一城市名称,存放在 ./city_name.txt
tee ./city_name.txt <<-'EOF'
北京
上海
广州
...
EOF
2 ./st_hotel_avg_price.sh code
根据城市名称查询mysql数据库,获得城市代码.
3 ./st_hotel_avg_price.sh price [1-8]
1-8 WhoseStar酒店星级.
根据执行上一步拿到的城市代码,查询elasticsearch,
获得当时,酒店标间含双早的平均参考价(元/间/夜),
保存好./city_name_code_avg_price.${WhoseStar}.txt 文件,发送给相关人员.
4 ./st_hotel_avg_price.sh clear
清理文件 ./city_name.txt ./city_name_code_avg_price.${WhoseStar}.txt
一个可传递参数的cli客户端工具脚本,特点是Jenkins参数化构建、远程触发构建、shell的整合。
mesos+marathon部署脚本。
这个脚本的功能:自动批量添加、删除 phabricator帐号。 特点是用 expect 模拟用户与shell交互,实现自动填充帐号注册信息。
批量修改jenkins ${JENKINS_HOME}/jobs/jobs_name/config.xml文件内的参数:
numToKeep 保持构建的最大个数
artifactNumToKeep 发布包最大保留#个构建。
适用于 k8s 或者 Mesos。
CoreDns客户端脚本,可用此脚本整成到jenkins以及Dockerfile实现灵活添加A记录.
./coredns.cli.sh
./coredns.cli.sh -p HOST_NAME IP TTL
./coredns.cli.sh -f list.txt
list.txt:
b3.test.dev.io 192.168.80.103 1200
b4.test.dev.io 192.168.80.104
b5.test.dev.io 192.168.80.105 600
脚本用途:
1) jenkins_dingding.py:
Jenkins与阿里钉钉机器人结合,将构建状态实时发送钉钉群。
2) jenkins_update_jobs_config_xml.py:
如果创建了大量Jenkins jobs任务,每个jobs任务的 "丢弃旧的构建" 的默认值都需要手工修改的话,工作量很大。
这个脚本的主要作用是方便批量修改 "丢弃旧的构建" 的默认值。
jenkins_update_jobs_config_xml.py 脚本使用方法
-
创建 jenkins 自由风格任务
-
源码管理
选择git 仓库
脚本地址: https://github.com/linuxsun/tools.git
3)选择 参数化构建过程
增加六个 String Parameter
1 名字 config_xml_root
默认值 D:\jenkins\jobs
2 名字 daysToKeep
默认值 -1
3 名字 numToKeep
默认值 6
4 名字 artifactDaysToKeep
默认值 -1
5 名字 artifactNumToKeep
默认值 6
6 名字 skip_str_list
默认值 _deploy,Trunk-Project,Branches-Project,update_jobs_config_xml
4)增加构建步骤 Execute shell
python python/jenkins/jenkins_update_jobs_config_xml.py \
$config_xml_root $daysToKeep $numToKeep $artifactDaysToKeep $artifactNumToKeep $skip_str_list
- 运行
运行参数化构建 Build with Parameters
按要求输入六个参数值,开始构建。
Jenkins首页 --> 系统管理 --> 读取设置 --> 使生效
jenkins_dingding.py 脚本使用方法
- 编辑你的jobs
构建后操作--> Post build task --> Log text: .* --> Operation: --AND-- --> Script: python python/jenkins/jenkins_dingding.py $JOB_BASE_NAME
http状态码监控与警告消息推送到阿里钉钉群。
http_code.py
http_url.py
jenkins+ansible+playook 部署 tomcat8\jdk1.8 jenkins参数化构建,与ansible的template模块都到用,灵活性高。
ansible部署 jdk1.8
1.1 demo
ansible-playbook -vv jdk18.yml --connection=local
1.2 custom
ansible-playbook -vv jdk18.yml --connection=local \
--extra-vars='jdk_dl_url=http://192.168.10.20/j/jdk' \
--extra-vars='jdk_version="8u111"' \
--extra-vars='jdk_version2="1.8.0_111"' \
--extra-vars='jdk_package_name="jdk-{{ jdk_version }}-linux-x64.tar.gz"' \
--extra-vars='jdk_user_name="admin"' \
--extra-vars='jdk_group_name="admin"' \
--extra-vars='jdk_work_dir="/data/java"' \
--extra-vars='jdk_home_dir="{{ jdk_work_dir }}/jdk{{ jdk_version2 }}"' \
--extra-vars='jdk_tmp_dir="/tmp"'
jenkins 部署jdk1.8
ansible 部署tomcat8
1.1 demo
ansible-playbook -v tomcat8.yml --connection=local
1.2 custom
ansible-playbook -v tomcat8.yml --connection=local \
--extra-vars='tomcat_version_jk="8.0.49"' \
--extra-vars='tomcat_native_version_jk="1.2.16"' \
--extra-vars='tomcat_user_name_jk=admin' \
--extra-vars='tomcat_group_name_jk=admin' \
--extra-vars='tomcat_password_jk="yg8AHjUjgjDl94dB"' \
--extra-vars='tomcat_base_dir_jk=/opt/tomcat' \
--extra-vars="tomcat_use_apr_jk=''" \
--extra-vars='tomcat_apr_install_dir_jk=""' \
--extra-vars='tomcat_port_shutdown_jk=8005' \
--extra-vars='tomcat_port_connector_jk=8080' \
--extra-vars='tomcat_port_redirect_jk=8443' \
--extra-vars='tomcat_override_uri_encoding_jk=""' \
--extra-vars='tomcat_port_ajp_jk=8009' \
--extra-vars='tomcat_java_opts_jk=""' \
--extra-vars='tomcat_catalina_opts_jk="-Xms1024M -Xmx2048M -server -XX:+UseParallelGC"' \
--extra-vars='tomcat_setenv_sh_jk=' \
--extra-vars='tomcat_tmp_dir_jk=/tmp' \
--extra-vars='tomcat_enable_gui_jk='
jenkins部署tomcat8
Saturn
https://github.com/vipshop/Saturn
该脚本可实现自动部署saturn-executor以及saturn-console。
动部署saturn-executor两种方式:
10.1) 直接用ansible部署 需要提供一些参数,按实际情况调整saturn-executor.yaml
ansible-playbook saturn-executor.yaml \
--extra-vars "EXECUTOR_VERSION='2.1.0.1' \
WORK_DIR='/application/saturn' PROJEST_NAME=saturn-executor-X-Y-Z \
VIP_SATURN_ZK_CONNECTION=10.24.24.24:2181 JMX_PORT=245123 \
ENVIRONMENT_MEM='-Xms1G -Xmx2G' NAMESPACE='sa.dev.io' \
EXECUTOR=executor_009 ANSIBLE_HOST_LIST_FROM_JENKINS='host_addr'"
10.2) 使用jenkins部署 新创建JenkJenkins步骤时,需要选择"自由任务", 并且使用参数化构建。 saturn-executor.yaml文件内的vars变更和值,由用户点构建时提供,这样会可视化和灵活。 Jenkins是主、从模式,构建分两步: 一步是build构建,参数化构建的参数和值,可以参考config-build.xml文件 另外一步是deploy,会在jenkins从服务器上执行,这个步骤也需要和第一步提供相同的参数,可以参考config-deploy.xml文件。
部署界面:
自动部署Saturn-Console:
playbook 使用方法有两种方式,原理与Saturn-executor类似。
10.3) 直接用ansible部署 参考10.1
10.4) 使用jenkins部署 参考10.2
jenkins自动构建步骤,可以参考: config-console-build.xml \ config-console-deploy.xml
部署界面:
ansible部署supervisord脚本
git clone https://github.com/linuxsun/tools.git
cd playbook/supervisor;
ansible-playbook -i supervisor supervisor.yml
systemctl status supervisord.service
批量安装阿里云监控playbook
#docker build --build-arg WORKDIR_DK="/etc/coredns" --build-arg ETCD_ADDR_DK="http://some-etcd:2379" -t coredns:v1.1.3 .
docker build --build-arg WORKDIR_DK="/etc/coredns" --build-arg ETCD_ADDR_DK="http://some-etcd:2379" -t harbor.dev.com/demo/coredns:v1.1.3 .
| ^ |
| (Here) |
- start etcd
docker pull elcolio/etcd
docker run -d -p 2379:2379 -p 2380:2380 -p 4001:4001 -p 7001:7001 \
-v /data/backup/dir:/data --name some-etcd elcolio/etcd:latest
| ^ |
| (Here) |
see: https://hub.docker.com/r/elcolio/etcd/
- start coredns
docker run -itd -p 0.0.0.0:53:53/udp -p 0.0.0.0:53:53 --link some-etcd:some-etcd --name coredns coredns:v1.1.3
| ^ |
| (Here) |
see: https://github.com/coreos/etcd
docker login harbor.dev.com
Username:
Password:
docker push harbor.dev.com/demo/coredns:v1.1.3