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

posted @ 2020-07-11 00:45  名字很长容易被惦记  阅读(569)  评论(0编辑  收藏  举报