基于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 < 
  
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 配置

ansible部署cobbler_第1张图片

作用域选项也做相同的配置

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、脚本代码放到附件