简单说明:
- 本系列记录使用ansible初始化部署生产环境主机的各项过程
- 本系列生产主机使用《CentOS6实验机模板搭建部署》和《CentOS6重置网卡克隆后的自适应脚本(二)》预部署,CentOS7系统类似
- 本系列环境需要一台Gitlab服务器保存ansible代码和生产项目代码
- 本系列环境需要一台Nginx服务器作为文件共享服务器
操纵主机简单部署:
- 依据《CentOS7实验机模板搭建部署》克隆一台CentOS7作为操纵主机,部署安装ansible
HOSTNAME=ansible_ops
hostnamectl set-hostname "$HOSTNAME"
echo "$HOSTNAME">/etc/hostname
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ip a|grep "inet "|grep -v 127|awk -F'[ /]' '{print $6}') $HOSTNAME">>/etc/hosts
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache faster
yum -y install ansible
sed -i '/^#host_key_checking =/ahost_key_checking = False' /etc/ansible/ansible.cfg
- 在Gitlab之上创建一个空项目,下载到操纵主机
yum -y install git
mkdir -p ~/devops && cd ~/devops
cd ~/devops
git config --global http.sslVerify false
git config --global user.email "vincent@local.com"
git config --global user.name "vincent"
git clone https://root:vincent%40123@gitlab.vincent.com:10194/devops/ansible.git
# 密码为vincent@123,其中@需要转译为%40
- 创建并部署操纵目录并配置共享的默认变量文件
WorkDir=~/devops/ansible/os_init
mkdir -pv ${WorkDir}/{inventory,roles,software,pro_mark} && cd ${WorkDir}
cat >defaults_var.yml<<\EOF
---
# 工作目录
work_dir: ~/devops/ansible/os_init
# hosts文件路径
inventory_hosts: "{{ work_dir }}/inventory/hosts"
# 默认的root密码
ansible_ssh_pass: "vincent"
# su到root用户的密码
ansible_become_pass: "vincent"
# 默认主机名
host_name: "{{ target_hostname_prefix }}-{{ hostname_tail.stdout }}"
# 主机名配置命令
host_name_set_6: "hostname '{{ host_name }}' && sed -i 's/^HOSTNAME.*$/HOSTNAME={{ host_name }}/g' /etc/sysconfig/network"
host_name_set_7: "hostnamectl set-hostname '{{ host_name }}' && echo '{{ host_name }}'>/etc/hostname"
# 文件共享服务器地址
file_share_server: "https://wget.vincent.com:10194"
# ssh公私钥文件url
private_key: "{{ file_share_server }}/ansible/ssh-key/id_rsa"
public_key: "{{ file_share_server }}/ansible/ssh-key/id_rsa.pub"
# zabbix agent rpm包
zabbix_agent_6_name: "zabbix-agent-3.0.31-1.el6.x86_64.rpm"
zabbix_agent_7_name: "zabbix-agent-3.0.31-1.el7.x86_64.rpm"
zabbix_agent_6_url: "{{ file_share_server }}/zabbix/{{ zabbix_agent_6_name }}"
zabbix_agent_7_url: "{{ file_share_server }}/zabbix/{{ zabbix_agent_7_name }}"
# java 部署包
java6_name: "jdk-6u45-linux-x64.bin"
java7_name: "jdk-7u80-linux-x64.tar.gz"
java8_name: "jdk-8u241-linux-x64.tar.gz"
java6_url: "{{ file_share_server }}/jdk/{{ java6_name }}"
java7_url: "{{ file_share_server }}/jdk/{{ java7_name }}"
java8_url: "{{ file_share_server }}/jdk/{{ java8_name }}"
java6_dirname: "jdk1.6.0_45"
java7_dirname: "jdk1.7.0_80"
java8_dirname: "jdk1.8.0_241"
# tomcat 部署包
tomcat6_name: "apache-tomcat-6.0.53.tar.gz"
tomcat7_name: "apache-tomcat-7.0.90.tar.gz"
tomcat8_name: "apache-tomcat-8.5.55.tar.gz"
tomcat6_url: "{{ file_share_server }}/tomcat/{{ tomcat6_name }}"
tomcat7_url: "{{ file_share_server }}/tomcat/{{ tomcat7_name }}"
tomcat8_url: "{{ file_share_server }}/tomcat/{{ tomcat8_name }}"
tomcat6_dirname: "apache-tomcat-6.0.53"
tomcat7_dirname: "apache-tomcat-7.0.90"
tomcat8_dirname: "apache-tomcat-8.5.55"
# jvm 配置参数
opts1: "-Djava.security.egd=file:/dev/./urandom -Xms1256m -Xmx1512m"
opts2: "{{ opts1 }} -XX:PermSize=164m -XX:MaxPermSize=228m"
opts3: "{{ opts2 }} -XX:-UseGCOverheadLimit"
opts4: "{{ opts3 }} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp"
# logstash rpm 包
logstash_name: "logstash-7.7.0.rpm"
logstash_url: "{{ file_share_server }}/elk/{{ logstash_name }}"
# 项目配置文件保存目录
pro_mark: "{{ work_dir }}/pro_mark"
# gitlib代码仓库地址
gitlib_url: "https://gitlab.vincent.com:10194"
EOF
- 克隆两台实验机作为测试主机,一台CentOS6,一台CentOS7,并写入到hosts配置中,初始IP为2和3,目标IP为100和101
cat >inventory/hosts<<EOF
os1 ansible_ssh_host=192.168.77.2 target_ip=192.168.77.100 target_hostname_prefix=NN-web project=vincent/shareprofit.git sub_pro=shareprofit-soaport java_version=java_1.8 tomcat_version=tomcat8 location=office
os2 ansible_ssh_host=192.168.77.3 target_ip=192.168.77.101 target_hostname_prefix=MAN-ser project=vincent/shareprofit.git sub_pro=shareprofit-merchantport java_version=java_1.8 tomcat_version=tomcat8 location=office
EOF
[TOC]
127

被折叠的 条评论
为什么被折叠?



