部署ssh-key:
依据《CentOS6实验机模板搭建部署》克隆部署试验机,IP:192.168.77.200
依据《CentOS7 python3.6 ansible2.5 源码安装》部署ansible主机,IP:192.168.77.100
192.168.77.100操作:
# 创建deploy用户下的ssh公私钥,将公钥部署到192.168.77.200之上,需要提前获取192.168.77.200的root密码
yum -y install sshpass
su - deploy
ssh-keygen
RootDefaultPass=vincent
# 需要提前获取192.168.77.200的root密码
sshpass -p ${RootDefaultPass} ssh-copy-id -o StrictHostKeyChecking=no root@192.168.77.200
ssh root@192.168.77.200 date
echo 192.168.77.200>/tmp/hosts
ansible -i /tmp/hosts 192.168.77.200 -u root -m ping
rm -rf /tmp/hosts
系统部署和软件升级:
192.168.77.100操作:
su - deploy
mkdir -pv os/{inventory,roles}
# 配置被操控的主机信息
cat >os/inventory/proenv<<EOF
192.168.77.200 Host_name=web Ethernet=eth0
[Server]
192.168.77.200
EOF
# 设置主机名为web,指定网卡设备名
# 创建os角色,实现对hostname、hosts的配置,升级系统
mkdir -pv os/roles/os/{files,tasks,templates}
cat >os/roles/os/templates/os.sh.j2<<EOF
#!/bin/bash
source ~/.bash_profile
hostname {{ Host_name }}
echo "\$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "\$(ifconfig {{ Ethernet }}|grep inet|awk -F'[ :]' '{print \$13}') {{ Host_name }}">>/etc/hosts
sed -i "s/^HOSTNAME.*$/HOSTNAME={{ Host_name }}/g" /etc/sysconfig/network
EOF
cat >os/roles/os/tasks/main.yml<<EOF
- name: rsync os.sh
template: src=roles/os/templates/os.sh.j2 dest=/tmp/os.sh
- name: setup hosts
shell: "bash /tmp/os.sh"
- name: update os
shell: "yum -y update warn=False"
EOF
cat >os/deploy.yml<<EOF
- hosts: "Server"
gather_facts: true
remote_user: root
roles:
- os
EOF
cd os
ansible-playbook -i inventory/proenv ./deploy.yml
cd
[TOC]