基于centos7 + ansible部署cobbler 目录结构
── cobbler ├── hosts ├── importiso.retry ├── importiso.yml ├── roles │ └── cobbler │ ├── defaults │ ├── files │ │ ├── bash │ │ │ ├── auto.sh │ │ │ └── ipteam.sh │ │ └── script.sh │ ├── handlers │ ├── meta │ ├── tasks │ │ └── main.yml │ ├── templates │ │ └── CentOS-7.ks │ └── vars │ └── main.yml ├── site.retry └── site.yml
1、vars 变量文件夹 main.yml
IPA: 192.168.1.32 #cobbler 部署服务器ip
#password:123456
password: \$1\$root\$j0bp.KLPyr.u9kgQ428D10 #安装系统登陆密码"\"为转义符号
HTTP: # cobbler 初始化部署镜像
2、tasks 文件夹 main.yml
- name: create name admin
user: name=admin password=$1$admin$1kgWpnZpUx.vTroWPXPIB0 groups=admin state=present # cobbler web访问账号密码 账号admin 密码admin 修改密码必须加密
openssl passwd -1 -salt 'admin' 'admin' #密钥生成
3、files 文件夹部署script.sh coobler使用
auto.sh 系统优化文件 echo test$HOST$NAME.test.com>/etc/hostname #计算机名修改 cat >> /etc/mail.rc <<EOF #发邮件smtp配置 set from=admin@test.com smtp=smtp.test.com set smtp-auth-user=admin smtp-auth-password=123456 smtp-auth=login EOF echo "serverip: $IPA servername: test$HOST$NAME.test.com " | mail -s 'server ip' 1111111@qq.com #部署完成邮件发送内容
ipteam.sh 双网卡绑定 DNS1=$(cat /etc/resolv.conf |grep -w "nameserver" | awk -F: ' NR==1 {print $1}' | awk '{print $2}') DNS2=$(cat /etc/resolv.conf |grep -w "nameserver" | awk -F: ' NR==2 {print $1}' | awk '{print $2}') IPA=$(ip addr | grep -w "eth0" | awk '{ print $2}' | awk '-F:' '{print $1}'| awk 'NR==2{print $1}') GATEWAY=$(route -n|grep "^0.0.0.0"|awk '{print $2}') NETMASK=$(ifconfig eth0 | grep -w "inet" | awk '{ print $4}' | awk '-F:' '{print $1}') #sed -i 's/BOOTPROTO=.*/BOOTPROTO=none/g' /etc/sysconfig/network-scripts/ifcfg-eth0 #mode:activebackup or lacp "runner": {"name":"lacp"} #"runner": {"name":"activebackup",lacp} nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name":"activebackup"}}' # 网卡绑定模式主备,汇聚 nmcli connection modify team0 ipv4.addresses "$IPA" nmcli connection modify team0 ipv4.gateway "$GATEWAY" nmcli connection modify team0 ipv4.dns "$DNS1 $DNS2" nmcli connection modify team0 ipv4.method manual nmcli connection add type team-slave con-name team-port1 ifname eth0 master team0 nmcli connection add type team-slave con-name team-port2 ifname eth1 master team0 nmcli connection up team-port1;nmcli connection up team-port2
4、windows dhcp 配置
作用域选项也做相同的配置
5、cobbler dhcp 配置
# 修改cobbler的dhcp模版,不要直接修改dhcp本身的配置文件,因为cobbler会覆盖。 vim /etc/cobbler/dhcp.template # 仅列出修改过的字段 …… subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option domain-name-servers 192.168.1.1; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.1.100 192.168.1.200; #根据实际情况配置配置完成 systemctl restart dhcpd.service systemctl enable dhcpd.service
6、importiso.yml
#添加新iso镜像脚本
- hosts: all
user: root
tasks:
- name: download "{{ NAME }}" from /opt
get_url:
url: "{{ HTTP_URL }}"
dest: /opt/{{ NAME }}
# checksum: md5:c875b0f1dabda14f00a3e261d241f63e #下载iso md5 可做iso验证
- name: mkdir /mnt/{{ ISONAME }} mount -o loop {{ NAME }} /mnt/{{ ISONAME }}
shell: mkdir -p /mnt/{{ ISONAME }} && mount -o loop /opt/{{ NAME }} /mnt/{{ ISONAME }}
ignore_errors: True
#- name: copy to cobbler #拷贝新安装脚本到cobbler 中心请使用绝对路径
# copy: src=/opt/cobbler/roles/cobbler/files/bash dest=/var/www/cobbler/ks_mirror/
# - name: copy to cobbler template
# template: src=/opt/cobbler/roles/cobbler/templates/{{ ISONAME }}.ks dest=/var/lib/cobbler/kickstarts/{{ ISONAME }}.ks # 安装ks文件有就打开或者部署好web选择
#- name: rep {{ ISONAME }}.ks ip
# shell: sed -i 's/192.168.1.40/{{ IPA }}/' /var/lib/cobbler/kickstarts/{{ ISONAME }}.ks #替换ks文件下载脚本ip地址
# - name: cobbler import ISO
# shell: cobbler import --path=/mnt/{{ ISONAME }} --name={{ ISONAME }} --kickstart=/var/lib/cobbler/kickstarts{{ ISONAME }}.ks --arch=x86_64
# ignore_errors: True # 带ks文件导入
- name: cobbler import ISO
shell: cobbler import --path=/mnt/{{ ISONAME }} --name={{ ISONAME }} --arch=x86_64
ignore_errors: True
- name: cobbler profile edit --name={{ ISONAME }}-x86_64 --kopts='net.ifnames=0 biosdevname=0'
shell: cobbler profile edit --name={{ ISONAME }}-x86_64 --kopts='net.ifnames=0 biosdevname=0' #设置网卡eth0 更具需要打开
- name: cobbler sync
shell: cobbler sync
#导入 CentOS-6.8-x86_64-minimal
ansible-playbook -i hosts importiso.yml -verbose --extra-vars "HTTP_URL=http://debian.cn99.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso NAME=CentOS-6.8-x86_64-minimal.iso ISONAME=CentOS-6.8"
7、hosts
配置成自己的IP
8、部署
cd到cobbler hosts文件 目录 ansible-playbook -i hosts site.yml -verbose
9、脚本代码放到附件
转载于:https://blog.51cto.com/juestnow/1875287