Score:1

ฉันจะดาวน์โหลดและติดตั้งแพ็คเกจ DPKG ปกติในสคริปต์ cloud-init ได้อย่างไร

ธง in

ฉันกำลังหมุนคอนเทนเนอร์น้ำหนักเบาบนโฮสต์ Linux โดยใช้ LXD/LXC

จุดประสงค์เดียวของคอนเทนเนอร์เหล่านี้คือการโฮสต์ "แอพหลักของ Dotnet และ Dotnet"

ฉันใช้ Ansible มาระยะหนึ่งแล้ว แต่เมื่อเร็ว ๆ นี้ฉันพบว่าฉันสามารถฝังสคริปต์ init ลงในข้อมูลผู้ใช้ของการกำหนดค่าคอนเทนเนอร์ได้ และ cloud-init จะดำเนินการดังกล่าว

มันยอดเยี่ยมมากและช่วยให้ฉันตั้งค่าคอนเทนเนอร์ที่กำหนดด้วยแพ็คเกจที่ต้องการยกเว้นปัญหาเดียว

ไมโครซอฟท์

(ฉันรู้ ฉันรู้... บันทึกเรื่องตลกและคำสบถ :-D)

ซึ่งแตกต่างจากผู้ให้บริการแพ็คเกจบุคคลที่สามส่วนใหญ่ MS ทำแพ็คเกจการเพิ่มแหล่งที่มาของ deb และคีย์ GPG ทั้งหมดของพวกเขาในไฟล์แพ็คเกจ dpkg แบบสแตนด์อโลน ไฟล์แพ็คเกจนี้ไม่ได้อยู่ในรายการผ่าน repos ปกติ ดังนั้นจึงต้องดาวน์โหลด "wget" และติดตั้ง โดยใช้คำสั่ง dpkg ปกติ

ตอนนี้ นี่คือวิธีที่ฉันทำสิ่งต่างๆ:

#cloud-config

# ใช้การอัปเดตโดยใช้ apt
package_update: จริง
package_upgrade: จริง

#ตั้งชื่อโฮสต์
ชื่อโฮสต์: ****
Fqdn: ****
Manage_etc_hosts: จริง

# ติดตั้ง repos ซอฟต์แวร์บุคคลที่สาม
# หมายเหตุ: สิ่งนี้ทำได้โดยใช้คำสั่ง run เนื่องจากวิธีที่ Microsoft แจกจ่ายสิ่งต่าง ๆ โดยใช้ dpkg แบบดิบ
เรียกใช้ cmd:
  - [wget, "https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb", -O, /root/packages-microsoft-prod.deb]
  - dpkg -i /root/packages-microsoft-prod.deb
  - rm /root/packages-microsoft-prod.deb
  - ปรับปรุงฉลาด
  - apt-get ติดตั้ง dotnet-sdk-3.1 -y
  - apt-get ติดตั้ง dotnet-sdk-5.0 -y

# ติดตั้งแพ็คเกจมาตรฐาน
แพ็คเกจ:
  - apt-ขนส่ง-https
  - หลาม 3
  - หลามเป็นงูหลาม3
  - มค
  - งุบงิบ
  - จิงซ์
  - คอมไพล์

# เพิ่มผู้ใช้
ผู้ใช้:
  - ชื่อ: ****
    ssh-อนุญาตคีย์:
      - ssh-rsa **** rsa-key-BLAH
    sudo: ['****']
    กลุ่ม: sudo
    เชลล์: /bin/bash

ข้อความสุดท้าย:
  - "การเริ่มต้นคอนเทนเนอร์เสร็จสมบูรณ์"

ส่วนที่สำคัญคือส่วน "runcmd"

เนื่องจากฉันใช้ "runcmd" สิ่งนี้จึงทำงานหลังจากทุกอย่างรวมถึงส่วนการติดตั้งแพ็คเกจปกติที่ฉันใส่ในแพ็คเกจมาตรฐานทั้งหมดที่ฉันต้องใช้

สิ่งที่ฉันต้องการจะทำคือติดตั้งไฟล์ dpkg จากนั้นเพิ่มชื่อแพ็คเกจที่จะติดตั้งในส่วนแพ็คเกจปกติเช่น

# ดาวน์โหลดและติดตั้ง dpkg ที่นี่

# ติดตั้งแพ็คเกจมาตรฐาน
แพ็คเกจ:
  - apt-ขนส่ง-https
  - หลาม 3
  - หลามเป็นงูหลาม3
  - มค
  - งุบงิบ
  - จิงซ์
  - คอมไพล์
  - ดอทเน็ต-sdk-3.1
  - ดอทเน็ต-sdk-5.0

ฉันลองใส่บิตนั้นใน runcmd เท่านั้น แต่เนื่องจากมันทำงานเป็นขั้นตอนสุดท้าย มันทำให้ส่วนของแพ็คเกจล้มเหลว เนื่องจากไม่ได้ติดตั้ง repo สำหรับ dotnet

ฉันยังลองใช้โมดูล "Apt" เพื่อติดตั้ง "microsoft-prod.list" ใน "/etc/apt/sources.list.d" แต่นั่นก็ล้มเหลวเช่นกัน เนื่องจาก MS ไม่เผยแพร่คีย์ GPG และนอกจากนี้ ของแหล่งที่มาทำให้เกิดความล้มเหลวเมื่อทำการอัปเดต apt เนื่องจากเป็นแหล่งที่ไม่น่าเชื่อถือ

ฉันได้ขัดถูเอกสารโมดูลสำหรับ cloud-init แล้ว และฉันไม่พบสิ่งใดที่ดูเหมือนว่าจะแนะนำให้ดาวน์โหลดและเพิ่มไฟล์ dpkg ปกติ ด้วยเหตุนี้ฉันจึงถามที่นี่ :-)

in flag
หากคุณต้องการแพ็คเกจเหล่านี้ในคอนเทนเนอร์ทั้งหมดของคุณ คุณสามารถเพิ่มแพ็คเกจลงในรูปภาพได้โดยตรง
in flag
อีกทางเลือกหนึ่งคือการเพิ่มแพ็คเกจ Microsoft ลงในไฟล์ .deb ด้วยตนเอง
in flag
@GeraldSchneider - ใช่ฉันคิดอย่างนั้น แต่น่าเสียดายที่คอนเทนเนอร์เหล่านี้จะไม่เป็นฐานเดียวกันเสมอไป ตอนนี้ฉันใช้ ubuntu:20.04 แต่มีการประสานผ่านเว็บอินเตอร์เฟสซึ่ง devs ที่ใช้พวกเขามีตัวเลือกของภาพฐานสดจาก Alpine ถึง Arch ถึง Ubuntu และทุกอย่างในระหว่างนั้น นอกจากนี้ใช่ฉันกำลังจะลองทำเช่นกัน แต่ฉันไม่สามารถจำวิธีนำเนื้อหาของไฟล์ deb ไปตลอดชีวิต :-)
sa flag
วิธีที่คุณทำอยู่ดูเหมือนจะเป็นวิธีที่ดีที่สุด ขณะนี้ไม่มีโมดูลเฉพาะสำหรับการติดตั้ง debs แต่ละรายการ
in flag
@falcojr ไม่มีปัญหาอย่าลังเลที่จะเพิ่มคำตอบนั้นแล้วฉันจะยอมรับ มันคุ้มค่าที่จะถามในกรณีที่มีคนรู้บางสิ่งที่ฉันไม่รู้ :-) ฉันอาจต้องกลับไปใช้ Ansible สำหรับบางสิ่ง
Score:1
ธง sa

วิธีที่คุณทำอยู่ดูเหมือนจะเป็นวิธีที่ดีที่สุด ขณะนี้ไม่มีโมดูลเฉพาะสำหรับการติดตั้ง debs แต่ละรายการ

Score:1
ธง cn

Microsoft เผยแพร่ข้อมูลเกี่ยวกับที่เก็บลินุกซ์ ที่นี่ซึ่งรวมถึงวิธีรับคีย์ gpg

การกำหนดค่าต่อไปนี้ควรเพิ่มที่เก็บ microsoft สำหรับ Ubuntu 20.04

ถนัด:
    การเก็บรักษา_sources_list: จริง
    แหล่งที่มา:
        ไมโครซอฟท์:
            เซิร์ฟเวอร์คีย์: https://packages.microsoft.com/keys/microsoft.asc
            รหัสคีย์: BC52 8686 B50D 79E3 39D3 721C EB3E 94AD BE12 29CF
            แหล่งที่มา: 'deb https://packages.microsoft.com/ubuntu/20.04/prod focal main'focal main'
in flag
ดี .... จะต้องลองอันนี้แน่นอน :-)
Mart10 avatar
cn flag
@shawty สิ่งหนึ่งที่ควรทราบอยู่ในสคริปต์ต้นฉบับที่คุณใช้ "https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb" เป็นลิงก์ที่เก็บแพ็คเกจ แต่เมื่อฉันเขียนสิ่งนี้ คำตอบ ลิงก์ไม่ทำงานสำหรับฉัน ฉันคิดว่ามันเลิกใช้แล้ว อันใหม่คืออันที่ได้รับจากเอกสารอย่างเป็นทางการที่ฉันเชื่อมโยงไป
in flag
ฉันไม่แปลกใจเลย.... ฉันต้องอัปเดตบล็อกโพสต์จำนวนมากที่ฉันทำเกี่ยวกับเจนกินส์ในช่วงหลายปีที่ผ่านมา ด้วยเหตุผลนี้เอง.... คีย์ GPG เปลี่ยนแปลงตลอดเวลา .. :-(

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา