
이제 Maas에는 다음과 같은 문제가 있습니다.
Ubuntu 16.04 설치를 위한 사용자 정의 구성을 만들었습니다(제 경우에는 다른 파티션 및 드라이브 구성이 필요함). 우리 서버에는 여러 개의 하드 드라이브가 있으며 그 중 2개는 시스템 전용입니다(보통 가장 작은 2개). 그래서 저는 이러한 구성을 위해 일부 스크립트를 사용하여 가장 작은 두 개의 드라이브를 결정하는 사용자 정의 구성을 만들었습니다. 그 후에는 소프트웨어 RAID 생성을 포함한 사용자 정의 파티셔닝을 사용합니다. 지금까지는 모든 것이 작동하지만 경우에 따라 grub-install에서 설치가 실패합니다. 질문: curtin에서 grub 구성을 변경해야 합니다. 그러면 grub-install에 대한 올바른 장치를 얻거나 grub 섹션을 완전히 비활성화할 수 있습니다. 내 custom_userdata_ubuntu는 현재 다음과 같습니다.
#cloud-config
debconf_selections:
maas: |
{{for line in str(curtin_preseed).splitlines()}}
{{line}}
{{endfor}}
early_commands:
01_get_device_list_script: wget -O /bin/list-devices http://10.7.36.1/list-devices
02_get_smallest_drives_script: wget -O /tmp/root_disk.sh http://10.7.36.1/root_disk.sh
03_chmod_list_devices: chmod 755 /bin/list-devices
04_set_drive_1: /bin/bash /tmp/root_disk.sh raid1_2_disk1 >/tmp/drive1
05_set_drive_2: /bin/bash /tmp/root_disk.sh raid1_2_disk2 >/tmp/drive2
partitioning_commands:
builtin: []
01_apt_get_update: apt-get update
02_install_gdisk: apt-get -y install gdisk mdadm kpartx
02_stop_raid_devices: for i in `ls /dev | grep -P 'md[0-9+]'`; do mdadm --stop /dev/$i; done
02_wait_for_device_to_settle: sleep 10; echo "Devices should be settled"
03_erase_metadata_drive_1: for i in 2 3 4 5 6 7; do mdadm --zero-superblock $(cat /tmp/drive1)${i} || /bin/true; done
03_erase_metadata_drive_2: for i in 2 3 4 5 6 7; do mdadm --zero-superblock $(cat /tmp/drive2)${i} || /bin/true; done
04_start_partitioning: echo Starting partitioning; sleep 10
05_set_drive1_label: /sbin/parted $(cat /tmp/drive1) -s mklabel gpt
06_set_drive2_label: /sbin/parted $(cat /tmp/drive2) -s mklabel gpt
07_set_boot_part_1: /sbin/parted -s $(cat /tmp/drive1) unit s mkpart biosboot 2048 4095
08_set_bios_boot_1: /sbin/parted -s $(cat /tmp/drive1) set 1 bios_grub on
09_mk_swap_1: /sbin/parted -s $(cat /tmp/drive1) mkpart primary 2098K 32G
10_parted_mk_root_1: /sbin/parted -s $(cat /tmp/drive1) mkpart primary ext4 32G 52G
11_parted_: /sbin/parted -s $(cat /tmp/drive1) mkpart primary ext4 52G 72G
12_parted_: /sbin/parted -s $(cat /tmp/drive1) mkpart primary ext4 72G 92G
13_parted_: /sbin/parted -s $(cat /tmp/drive1) mkpart primary ext4 92G 112G
14_parted_: /sbin/parted -s $(cat /tmp/drive1) mkpart primary ext4 112G 100%
141_start_copy_partitioning: echo Starting Partitioning copy process
15_sgdisk_copy_table: /sbin/sgdisk -R $(cat /tmp/drive2) $(cat /tmp/drive1)
16_sgdisk_generate_uuid: /sbin/sgdisk -G $(cat /tmp/drive2)
17_parted_set_raid_1_2: /sbin/parted $(cat /tmp/drive1) set 2 "raid" on
18_parted_set_raid_1_3: /sbin/parted $(cat /tmp/drive1) set 3 "raid" on
19_parted_set_raid_1_4: /sbin/parted $(cat /tmp/drive1) set 4 "raid" on
20_parted_set_raid_1_5: /sbin/parted $(cat /tmp/drive1) set 5 "raid" on
21_parted_set_raid_1_6: /sbin/parted $(cat /tmp/drive1) set 6 "raid" on
22_parted_set_raid_1_7: /sbin/parted $(cat /tmp/drive1) set 7 "raid" on
23_parted_set_raid_2_2: /sbin/parted $(cat /tmp/drive2) set 2 "raid" on
24_parted_set_raid_2_3: /sbin/parted $(cat /tmp/drive2) set 3 "raid" on
25_parted_set_raid_2_4: /sbin/parted $(cat /tmp/drive2) set 4 "raid" on
26_parted_set_raid_2_5: /sbin/parted $(cat /tmp/drive2) set 5 "raid" on
27_parted_set_raid_2_6: /sbin/parted $(cat /tmp/drive2) set 6 "raid" on
28_parted_set_raid_2_7: /sbin/parted $(cat /tmp/drive2) set 7 "raid" on
28_let_devices_settle: sleep 10; echo "and again devices should be settled"
29_mdadm_create_swap: yes | mdadm --create /dev/md0 --level=1 --force --raid-disks=2 --metadata=0.90 $(cat /tmp/drive2)2 $(cat /tmp/drive1)2
30_mdadm_create_root: yes | mdadm --create /dev/md1 --level=1 --force --raid-disks=2 --metadata=0.90 $(cat /tmp/drive2)3 $(cat /tmp/drive1)3
31_mdadm_create_usr: yes | mdadm --create /dev/md2 --level=1 --force --raid-disks=2 --metadata=0.90 $(cat /tmp/drive2)4 $(cat /tmp/drive1)4
32_mdadm_create_var: yes | mdadm --create /dev/md3 --level=1 --force --raid-disks=2 --metadata=0.90 $(cat /tmp/drive2)5 $(cat /tmp/drive1)5
33_mdadm_create_home: yes | mdadm --create /dev/md4 --level=1 --force --raid-disks=2 --metadata=0.90 $(cat /tmp/drive2)6 $(cat /tmp/drive1)6
34_mdadm_create_data: yes | mdadm --create /dev/md5 --level=1 --force --raid-disks=2 --metadata=0.90 $(cat /tmp/drive2)7 $(cat /tmp/drive1)7
35_mkswap: mkswap /dev/md0
36_mkfs_root: mkfs -t ext4 /dev/md1
37_mkfs_usr: mkfs -t ext4 /dev/md2
38_mkfs_var: mkfs -t ext4 /dev/md3
39_mkfs_home: mkfs -t ext4 /dev/md4
40_mkfs_data: mkfs -t ext4 /dev/md5
41_mount_root: mount /dev/md1 ${TARGET_MOUNT_POINT}
42_mkdirs: mkdir ${TARGET_MOUNT_POINT}/usr ${TARGET_MOUNT_POINT}/var ${TARGET_MOUNT_POINT}/home ${TARGET_MOUNT_POINT}/data; mkdir -p ${TARGET_MOUNT_POINT}/boot/grub
43_mount_usr: mount /dev/md2 ${TARGET_MOUNT_POINT}/usr
44_mount_var: mount /dev/md3 ${TARGET_MOUNT_POINT}/var
45_mount_home: mount /dev/md4 ${TARGET_MOUNT_POINT}/home
46_mount_data: mount /dev/md5 ${TARGET_MOUNT_POINT}/data
47_fstab_root: echo "/dev/md1 / ext4 errors=remount-ro 0 1" >> $OUTPUT_FSTAB
48_fstab_usr: echo "/dev/md2 /usr ext4 defaults 0 2" >> $OUTPUT_FSTAB
49_fstab_var: echo "/dev/md3 /var ext4 defaults 0 1" >> $OUTPUT_FSTAB
50_fstab_home: echo "/dev/md4 /home ext4 defaults 0 2" >> $OUTPUT_FSTAB
51_fstab_data: echo "/dev/md5 /data ext4 defaults 0 2" >> $OUTPUT_FSTAB
52_fstab_swap: echo "/dev/md0 none swap sw 0 0" >> $OUTPUT_FSTAB
53_make_device_map_dir: for i in 0 1 2 3 4 5; do echo "(md/$i) /dev/md$i)" >>${TARGET_MOUNT_POINT}/boot/grub/device.map; done
swap:
filename: swap.img
size: 0
late_commands:
maas: [wget, '--no-proxy', '{{node_disable_pxe_url}}', '--post-data', '{{node_disable_pxe_data}}', '-O', '/dev/null']
40_create_grub_config: ["curtin", "in-target", "--", "sh", "-c", "/usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg"]
41_install_bootloader_drive_1: ["curtin", "in-target", "--", "sh", "-c", "grub-install $(cat /tmp/drive1)"]
42_install_bootloader_drive_1: ["curtin", "in-target", "--", "sh", "-c", "grub-install $(cat /tmp/drive2)"]
51_fill_mdadm: ["curtin", "in-target", "--", "sh", "-c", "mdadm --examine --scan >/etc/mdadm/mdadm.conf"]
52_update_initramfs: ["curtin", "in-target", "--", "sh", "-c", "update-initramfs -u -k all"]
문제는 두 개의 시스템 HDD가 있고 RAID 컨트롤러 설치에 JBOD가 활성화되어 있는 경우 grub이 /dev/sda에 자체 설치를 시도하게 된다는 것입니다. 이 경우 시스템 디스크가 아니라 jbod 디스크일 수 있습니다. 그 커널은 sda로 설정되어 있고 비어 있습니다. maas에게 내부에서 다른 디스크에 grub을 설치하도록 지시할 수 있는 방법이 있습니까(또는 구성의 후반부 섹션에 있는 것처럼 grub 설치를 비활성화합니다)?
또한 설치 후 maas 동작에 대한 또 다른 질문이 있습니다.
- 서버 Maas를 해제하면 전원이 꺼집니다. 이러한 동작을 어떻게 비활성화합니까?
- 또한 릴리스 후 Maas는 PXE에서 부팅 장치를 변경하지 않으므로 첫 번째 부팅이 실패하면 PXE 구성이 더 이상 존재하지 않습니다.
- 서버 Maas를 성공적으로 배포한 후 인터페이스 섹션에 서버 IP 주소가 표시되지 않습니다. 이 문제를 어떻게 해결합니까?
답변1
이제 Maas 코드와 온라인 참조 자료를 살펴보며 새로운 구성을 만들었습니다. 아마도 누군가가 좋아할 것입니다. 작동 방식: 1. 가장 작은 드라이브를 감지합니다. 크기가 같은 두 개의 드라이브가 있는 경우 /, /usr, /var, /home에 대한 마운트 지점이 있는 소프트웨어 RAID를 생성합니다. 2. 장치가 sda/sdb가 아닐 때 Grub이 올바르게 설치됩니다.
의도한 대로 작동하지 않는 것은 resolv.conf 구성입니다. 제 생각에는 dnsmasq 또는 이와 유사한 것 같습니다. 이는 내 네트워크 구성을 무시하고 resolv.conf에 127.0.0.1을 넣어서 조사해 보겠습니다. 또한 example.org와 같은 것으로 변경될 수 있습니다. 또한 이 목록의 구성에서 늦은 명령을 추가했습니다(그 중 일부는 생략했지만). 이는 puppet에 대한 사실을 추가하고 puppet-agent를 설치하고 실행합니다(puppet 이후). killall 섹션도 실행하세요. chroot 환경을 비워야 합니다. 그렇지 않으면 설치가 실패하므로 임시 디렉토리가 계속 사용 중이어서 마운트 해제할 수 없습니다.)
#cloud-config
debconf_selections:
maas: |
{{for line in str(curtin_preseed).splitlines()}}
{{line}}
{{endfor}}
early_commands:
01_empty_command: echo INSTALLATION STARTED
{{py:
import operator
deviceListTmp = node.blockdevice_set.all()
deviceList = sorted(deviceListTmp, key=operator.attrgetter('size'))
has_raid = False
if (len(deviceList) > 1):
bootdrive_1 = deviceList[0]
bootdrive_2 = deviceList[1]
if bootdrive_1.size == bootdrive_2.size:
has_raid = True
else:
bootdrive_1 = deviceList[0]
}}
{{if has_raid}}
storage:
version: 1
config:
- id: {{bootdrive_1.name.strip()}}
type: disk
ptable: gpt
path: /dev/{{bootdrive_1.name.strip()}}
name: boot_drive_1
grub_device: 1
wipe: superblock-recursive
- id: bios_boot_partition_1
type: partition
size: 1MB
device: {{bootdrive_1.name.strip()}}
flag: bios_grub
- id: {{bootdrive_1.name.strip()}}2
type: partition
size: 30G
device: {{bootdrive_1.name.strip()}}
- id: {{bootdrive_1.name.strip()}}3
type: partition
size: 19G
device: {{bootdrive_1.name.strip()}}
- id: {{bootdrive_1.name.strip()}}4
type: partition
size: 19G
device: {{bootdrive_1.name.strip()}}
- id: {{bootdrive_1.name.strip()}}5
type: partition
size: 19G
device: {{bootdrive_1.name.strip()}}
- id: {{bootdrive_1.name.strip()}}6
type: partition
size: 19G
device: {{bootdrive_1.name.strip()}}
- id: {{bootdrive_2.name.strip()}}
type: disk
ptable: gpt
path: /dev/{{bootdrive_2.name.strip()}}
name: boot_drive_2
grub_device: 1
wipe: superblock-recursive
- id: bios_boot_partition_2
type: partition
size: 1MB
device: {{bootdrive_2.name.strip()}}
flag: bios_grub
- id: {{bootdrive_2.name.strip()}}2
type: partition
size: 30G
device: {{bootdrive_2.name.strip()}}
- id: {{bootdrive_2.name.strip()}}3
type: partition
size: 19G
device: {{bootdrive_2.name.strip()}}
- id: {{bootdrive_2.name.strip()}}4
type: partition
size: 19G
device: {{bootdrive_2.name.strip()}}
- id: {{bootdrive_2.name.strip()}}5
type: partition
size: 19G
device: {{bootdrive_2.name.strip()}}
- id: {{bootdrive_2.name.strip()}}6
type: partition
size: 19G
device: {{bootdrive_2.name.strip()}}
- id: mddevice0
name: md0
type: raid
raidlevel: 1
devices:
- {{bootdrive_1.name.strip()}}2
- {{bootdrive_2.name.strip()}}2
- id: mddevice1
name: md1
type: raid
raidlevel: 1
devices:
- {{bootdrive_1.name.strip()}}3
- {{bootdrive_2.name.strip()}}3
- id: mddevice2
name: md2
type: raid
raidlevel: 1
devices:
- {{bootdrive_1.name.strip()}}4
- {{bootdrive_2.name.strip()}}4
- id: mddevice3
name: md3
type: raid
raidlevel: 1
devices:
- {{bootdrive_1.name.strip()}}5
- {{bootdrive_2.name.strip()}}5
- id: mddevice4
name: md4
type: raid
raidlevel: 1
devices:
- {{bootdrive_1.name.strip()}}6
- {{bootdrive_2.name.strip()}}6
- id: md_swap
type: format
fstype: swap
volume: mddevice0
- id: md_root
type: format
fstype: ext4
volume: mddevice1
- id: md_usr
type: format
fstype: ext4
volume: mddevice2
- id: md_var
type: format
fstype: ext4
volume: mddevice3
- id: md_home
type: format
fstype: ext4
volume: mddevice4
- id: mount_swap
type: mount
device: md_swap
- id: mount_root
type: mount
path: /
device: md_root
- id: mount_usr
type: mount
path: /usr
device: md_usr
- id: mount_var
type: mount
path: /var
device: md_var
- id: mount_home
type: mount
path: /home
device: md_home
grub:
install_devices:
- /dev/{{bootdrive_1.name.strip()}}
- /dev/{{bootdrive_2.name.strip()}}
{{else}}
storage:
version: 1
config:
- id: {{bootdrive_1.name.strip()}}
type: disk
ptable: gpt
path: /dev/{{bootdrive_1.name.strip()}}
name: boot_drive_1
grub_device: 1
wipe: superblock-recursive
- id: bios_boot_partition
type: partition
size: 1MB
device: {{bootdrive_1.name.strip()}}
flag: bios_grub
- id: {{bootdrive_1.name.strip()}}2
type: partition
size: 30G
device: {{bootdrive_1.name.strip()}}
- id: {{bootdrive_1.name.strip()}}3
type: partition
size: 19G
device: {{bootdrive_1.name.strip()}}
- id: {{bootdrive_1.name.strip()}}4
type: partition
size: 19G
device: {{bootdrive_1.name.strip()}}
- id: {{bootdrive_1.name.strip()}}5
type: partition
size: 19G
device: {{bootdrive_1.name.strip()}}
- id: {{bootdrive_1.name.strip()}}6
type: partition
size: 19G
device: {{bootdrive_1.name.strip()}}
- id: fs_swap
type: format
fstype: swap
volume: {{bootdrive_1.name.strip()}}2
- id: fs_root
type: format
fstype: ext4
volume: {{bootdrive_1.name.strip()}}3
- id: fs_usr
type: format
fstype: ext4
volume: {{bootdrive_1.name.strip()}}4
- id: fs_var
type: format
fstype: ext4
volume: {{bootdrive_1.name.strip()}}5
- id: fs_home
type: format
fstype: ext4
volume: {{bootdrive_1.name.strip()}}6
- id: mount_swap
type: mount
device: fs_swap
- id: mount_root
type: mount
path: /
device: fs_root
- id: mount_usr
type: mount
path: /usr
device: fs_usr
- id: mount_var
type: mount
path: /var
device: fs_var
- id: mount_home
type: mount
path: /home
device: fs_home
grub:
install_devices:
- /dev/{{bootdrive_1.name.strip()}}
{{endif}}
network:
version: 1
config:
- type: nameserver
address:
- 10.121.10.1
- 192.168.121.1
search:
- <domainname>
swap:
filename: swap.img
size: 0
late_commands:
12_reconfigure_openssh: ["curtin", "in-target", "--", "sh", "-c", "dpkg-reconfigure openssh-server"]
13_add_puppet_key: ["curtin", "in-target", "--", "sh", "-c", "wget -O /tmp/puppet.key http://apt.puppetlabs.com/DEB-GPG-KEY-puppet && apt-key add /tmp/puppet.key"]
14_add_puppet_repo: ["curtin", "in-target", "--", "sh", "-c", "echo 'deb http://apt.puppetlabs.com xenial PC1' >/etc/apt/sources.list.d/puppetlabs-pc1.list && apt-get update"]
15_run_fix: ["curtin", "in-target", "--", "sh", "-c", "apt-get -y -f install"]
18_install_puppet_and_requrements: ["curtin", "in-target", "--", "sh", "-c", "apt-get -y install puppet-agent lsof jq ipmiutil wget python-requests parted strace tcpdump mc net-tools lsb-release"]
20_add_team_fact: ["curtin", "in-target", "--", "sh", "-c", "wget -O /tmp/smdb_data.py http://10.7.36.1/smdb_data.py && python /tmp/smdb_data.py && rm -f /tmp/smdb_data.py"]
21_run_puppet: ["curtin", "in-target", "--", "sh", "-c", "/opt/puppetlabs/bin/puppet agent -t --server puppet4.<domain>; killall -9 splunkd; killall -9 zabbix_agentd; killall -9 mdadm; lsof /proc"]
22_display_network_config: cat $OUTPUT_NETWORK_CONFIG