zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Java 动态编译
    在ubuntu 18.04下,无线网卡无驱动,连不上wifi,显示wifi没有适配器的解决方法
    由浅入深了解Thrift(1,2,3)
    Docker系列05:docker镜像制作 &Docker file
    Docker系列04:docker数据存储
    Docker系列03:docker网络
    关于在github上 下载源码 clone 非 master 分支的代码
    CentOS 6 & 7 忘记root密码的修改方法
    Windows RDP远程连接CentOS 7
    Windows 上用IntelliJ Idea调试百度大数据分析框架Apache Doris FE
  • 原文地址:https://www.cnblogs.com/zhaobowen/p/13282144.html
Copyright © 2011-2022 走看看