ansiable批量设置环境-hostname、docker、jdk
挺想整合一篇ansible设置k8s基础环境的文档,实在是没时间(醒悟的太晚,之前我的文档全是docx保存到网盘上的)最近下班一直赶着把以前的文档整理到bolg上。
等有机会需要部署新的k8s集群时,再补充吧。
本文设想已经装好ansiable,就不写ansibale的安装。
检查:ansible
ansible wde -m ping
设置主机名
编写ansiable-playbook 的yml文件
cat >> sethostname.yml<<EOF
- hosts : client
remote_user : root
tasks :
- name : show hostname
shell : hostname
- name : show ip
command : ip a
- hostname : name=client-{{ ansible_default_ipv4.address.split('.')[-1] }}
EOF
执行playbook
ansible-playbook ./changehostname.yml
查看结果
ansible all -a "hostname"
ansible_default_ipv4.address这个东东是ansiable的内置变量,详细翻一翻ansiable吧,我也记不清楚了。
sethostname.yml就是个单文件,放哪儿都一样。
安装docker
ansible官方 有很多作者上传的编好的playbook.各种各样,稍微改改就能用。
我这里搜了一个第一名,这个作者有很多作品,觉得大神级。
下载
ansible-galaxy install geerlingguy.docker
下载成功后可到/etc/ansiable/role下查看
创建一个playbook引用刚才下载的docker角色。
vim pb_docker.yml
---
- hosts: wde
vars:
docker_users:
- root
roles:
- role: geerlingguy.docker
become: yes
有两处是要按实际情况修改的,host:实际主机组 docker_users :实际安装用户,如果非root 的话,需要事先创建用户,
执行部署
ansible-playbook pb_docker.yml
检查:
ansible wde -a 'docker --version'
ansible all -a "systemctl restart docker"
pb_docker.yml是个单文件,放哪儿都行。不过要检查ansiable的配置文件:
查看配置文件/etc/ansible/ansible.cfg
修改(可选):
inventory = /etc/ansible/hosts
roles_path = /opt/ansible
下载好的role位置要和这里的roles_path一致。
jdk
docker我们使用下载role的方式,jdk也是可以的,不过这里我们手动编写一个,实践一下。
新建role文件:
目录结构如下:
├── roles
├── jdk-install
│ ├── default
│ ├── files #jdk压缩包存放目录
│ │ └── jdk-7u79-linux-x64.tar.gz
│ ├── handler
│ ├── meta
│ ├── tasks #部署安装流程yml文件目录
│ │ └── main.yml
│ ├── templates
│ │ └── set_jdk.sh #配置目标机器的Java环境变量脚本
│ └── vars
│ └── main.yml #记录使用到的变量
├──jdk-install.yml
├──hosts
├──jdk-install.sh
编辑tasks任务流程
vim
vim main.yml
- name: copy jdk to remote host
copy: src=jdk-7u79-linux-x64.tar.gz dest=~
- name: unzip jdk
shell: tar -zxf jdk-7u79-linux-x64.tar.gz
- name: creat soft link
shell: ln -s ~/jdk1.7.0_79 jdk
- name: set jdk_env copy use template
template: src=set_jdk.sh dest=~/set_jdk.sh
- name: execute script to set jdkenv
shell: sh set_jdk.sh
- name: source bash_profile
shell: source ~/.bash_profile
- name: remove files
shell: rm jdk-7u79-linux-x64.tar.gz set_jdk.sh
编辑templates环境变量脚本
vim set_jdk.sh
#!/bin/bash
echo "export JAVA_HOME=${HOME}/jdk" >> ~/.bash_profile
echo 'export CLASSPATH=.:${JAVA_HOME}/lib' >> ~/.bash_profile
echo 'export PATH=${JAVA_HOME}/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
在vars下设置变量
vim main.yml
user: root
host_cluster: test
编写剧本引用jdk-install这个role
vim pbjdk.yml
- hosts: "{{ host_cluster }}"
gather_facts: no
vars:
user: "{{ user }}"
roles:
- jdk-install
执行
ansible-playbook pbjdk.yml
检查
保险起见先执行一次
ansible all -a "sh ~/.bash_profile"
登陆服务抽查which java