基于ansible的生产环境部署构建(三) 角色ssh_ip_host

角色功能说明:

  • 该角色主要完成对客户端主机的ssh公钥分发、IP和主机名以及hosts文件配置

角色部署:

  • 创建目录结构,创建软连接,关联默认变量文件
WorkDir=~/devops/ansible/os_init && cd ${WorkDir}
RoleName=ssh_ip_host
mkdir -pv roles/${RoleName}/{defaults,files,handlers,meta,tasks,templates,vars}
ln -s ${WorkDir}/defaults_var.yml roles/${RoleName}/defaults/main.yml
  • 配置网卡模版文件,如果环境中有多个vlan,则为每个vlan配置网卡模版文件
cat >roles/${RoleName}/templates/ifcfg-interface-192.168.77.j2<<EOF
DEVICE={{ interface.stdout }}
NAME={{ interface.stdout }}
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
DEFROUTE=yes
IPADDR={{ target_ip }}
PREFIX=24
GATEWAY=192.168.77.1
EOF
  • 创建角色任务
cat >roles/${RoleName}/tasks/main.yml<<\EOF
---
- name: "分发公钥"
  authorized_key:
      user: root
      key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
      state: present
- name: "获取网卡设备名"
  shell:
    "ip link show|grep ^[0-9]|grep -v ' lo: '|awk -F'[ |:]' '{print $3}' "
  register: interface
- name: "获取网段信息"
  shell:
    "echo {{ target_ip }}|awk -F'.' '{print $1\".\"$2\".\"$3}'"
  register: interface_gw
- name: "模版配置网卡"
  template:
    src: ifcfg-interface-{{ interface_gw.stdout }}.j2
    dest: /etc/sysconfig/network-scripts/ifcfg-{{ interface.stdout }}
    force: yes
    owner: root
    group: root
    mode: 0644
- name: "生成主机名后半部分"
  shell:
    "echo {{ target_ip }}|awk -F'.' '{print $2$3$4}'"
  register: hostname_tail
- name: "配置主机名 centos6"
  shell:
    "{{ host_name_set_6 }}"
  when: ansible_distribution_major_version == "6"
- name: "配置主机名 centos7"
  shell:
    "{{ host_name_set_7 }}"
  when: ansible_distribution_major_version == "7"
- name: "配置hosts文件"
  shell:
    echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts && echo "{{ target_ip }} {{ host_name }}">>/etc/hosts
EOF
  • 创建任务playbook并执行
cat >os-init-2-${RoleName}.yml<<EOF
---
- hosts: all
  remote_user: root
  gather_facts: true
  become: no
  roles:
    - ${RoleName}
EOF
ansible-playbook -i inventory/hosts os-init-2-${RoleName}.yml

注意事项:

  • 该角色对IP只进行配置,IP生效需要重启网络或重启主机实现
  • 重启功能由下一个角色reboot实现,重启后需要修改inventory/hosts相应的IP配置
  • 该角色可以反复执行,但是要保证inventory/hosts相应的IP配置是正确的

[TOC]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值