GNU/Linux >> Znalost Linux >  >> Ubuntu

Co je Cloud-Init?

Úvod

Cloudové instance jsou založeny na výchozích cloudových obrázcích. Protože každá instance používá operační systém šablony, je na uživateli, aby nakonfiguroval a nastavil jedinečnou instanci pomocí uživatelských dat.

Namísto konfigurace každého po jeho spuštění je k dispozici nástroj s otevřeným zdrojovým kódem, který automatizuje inicializaci – cloud-init .

Co je cloud-init?

Cloud-init je služba používaná k přizpůsobení operačních systémů založených na Linuxu v cloudu. Umožňuje vám přizpůsobit virtuální stroje poskytované dodavatelem cloudu úpravou obecné konfigurace operačního systému při spouštění. Canonical původně vyvinul cloud-init pro Ubuntu, ale rozšířil se na většinu hlavních operačních systémů Linux a FreeBSD. Dnes oficiálně podporuje 8 unixových OS - Ubuntu, Arch Linux, CentOS, Red Hat, FreeBSD, Fedora, Gentoo Linux a openSUSE.

Služba se používá jako průmyslový standard pro počáteční fázi inicializace virtuálního počítače, jakmile byl zřízen. Umožňuje vám tedy nastavit virtuální počítač tak, aby při prvním spuštění fungoval podle potřeby.

Většina prodejců má službu předinstalovanou v obrazech operačního systému Unix. Při vytváření virtuálního počítače pomocí řídicího panelu dodavatele cloudu budete s největší pravděpodobností mít cloud-init nebo data uživatele sekce pro specifikaci požadované konfigurace.

Cloud-init se používá k instalaci balíčků, konfiguraci uživatelů a zabezpečení, zapisování souborů a provádění dalších úkolů, které chcete automaticky zpracovávat při prvním nebo dalším spuštění.

Jak funguje cloud-init?

Cloud-init je služba, která nastaví instanci vašeho virtuálního počítače s požadovanou konfigurací a softwarem připraveným k použití. Služba se spouští při spuštění a využívá metadata poskytnutá poskytovatelem cloudu nebo přímým uživatelem.

Činí tak spouštěním skriptů, nejčastěji z cloud-config soubor. Chcete-li tedy změnit jakékoli výchozí nastavení, musíte upravit soubor konfigurace cloudu na bitové kopii virtuálního počítače. Toto je soubor YAML, který se řídí základními pravidly syntaxe YAML, jako například:

  • Vztahy mezi položkami jsou definovány odsazením s mezerami .
  • svislý znak (| ) předtím, než text naznačuje, že by měl být interpretován tak, jak je.
  • Textové bloky jsou odsazeny .
  • Pomlčka na začátku (- ) identifikuje členy seznamu.
  • dvojtečka (: ) + mezera + hodnota se používá k vytváření položek asociativního pole.

Můžete přidat soubor cloud-config:

  1. V rozhraní řídicí roviny při výběru dalších možností. Poskytovatel bude mítcloud-init nebo Údaje o uživateli možnost, kam můžete vložit konfigurační soubor.
  2. Prostřednictvím souboru v objektu JSON v požadavku API.

Možnosti cloud-init

Služba cloud-init se používá k řadě věcí, včetně:

  • Přidávání uživatelů a skupin.
  • Vypisování libovolných souborů.
  • Přidávání repozitářů YUM.
  • Spouštění příkazů při prvním spuštění.

Chcete-li se naučit syntaxi použitou pro jednotlivé funkce, přečtěte si níže uvedené podsekce.

Přidávání uživatelů a skupin pomocí cloud-init

Chcete-li přidat uživatele a skupiny do virtuálního počítače během zřizování, použijte v konfiguračním souboru cloudu následující syntaxi:

#cloud-config
# Add groups to the system.
groups:
  - group_name: [member1,member2]
# Add users to the system.
users:
 - default
 - name: User’s login name.
   gecos: User’s real name.
   primary_group: The primary group the user belongs to. If omitted, a new group is created under the user’s name.
   groups: Additional groups to which you want to add the user.
   selinux_user: The SELinux user for the user's login. If omitted, the system selects the default SELinux user.
   expiredate: 'year-month-day' - Data when the user’s account should be disabled.
   ssh_import_id: SSH IDs which you want to import.
   lock_passwd: Use true or false to define whether you want to lock the password to disable password login. By default, the value is set to true.
   inactive: 'x' - The number of days until the account is disabled after a password expires.
   passwd: The hash of the password you want to use.
   ssh_authorized_keys: Add keys to user’s authorized keys file:
      - <ssh pub key 1>
      - <ssh pub key 2>
   system: Use true or false to define the new user as a system user.
   sudo: Use sudo rule string(s) to define the user privileges. The user has no privileges by default, but it can accept one or multiple sudo rule strings. For example, add ALL=(ALL) NOPASSWD:ALL to give the user unrestricted access. To prevent sudo access, type: False.
  - snapuser: Specify the email for your Ubuntu SSO account to allow snap to import a username and public keys into the system.

Při přidávání nového uživatele nemusíte zahrnout všechny možnosti. Výše uvedené konfigurace platí pouze v případě, že je uživatel nový. Pokud uživatel již existuje, systém pouze upraví následující možnosti:

  • plain_text_passwd
  • hashed_passwd
  • lock_passwd
  • sudo
  • ssh_authorized_keys
  • ssh_redirect_user

Vypisování libovolných souborů

Pomocí konfigurační syntaxe yaml můžete zapisovat libovolné soubory. Obsah lze zakódovat (base64 nebo gzip) a specifikovat jako prostý text nebo binárně. Než jsou data zapsána do definované cesty, jsou dekódována. Modul podporuje všechny distribuce a má frekvenční modul jednou za instanci.

Chcete-li zapsat libovolné soubory pomocí cloud-init, použijte následující syntaxi:

#cloud-config
# Write out arbitrary files
write_files:
  path: The file path to which the content is added.
  content: The content you want to add to the path.
  owner: The user/group that has ownership. By default, the owner is root:root.
  permissions: The permission of the specified path, defined with the appropriate octal string. The default permission is ‘0644’.
  append: Use true or false to choose whether to append the specified content to an existing file if the path provided exists. The default value is false.

Přidávání repozitářů YUM

Možná budete muset nakonfigurovat úložiště yum, abyste se ujistili, že k instalaci požadovaného softwaru používáte správné balíčky. Pomocí cloud-init přidejte do systému konfigurace úložiště yum. Konfigurační soubor je přidán do /etc/yum.repos.d .

Chcete-li přidat konfiguraci úložiště yum, použijte syntaxi:

yum_repos:
  <repo_name>:
            baseurl: Repository URL.
            name: Repository name.
            enabled: true/false
            + any other repository configuration option

Spouštění příkazů při prvním spuštění

Chcete-li spustit libovolné příkazy na začátku procesu spouštění, můžete použít bootcmd nebo runcmd modul.

bootcmd po spuštění boothooku spouštějte specifické příkazy při každém spuštění . Podporuje všechny distribuce a přijímá příkazy zadané jako seznamy nebo řetězce. Syntaxe je:

bootcmd: 
   - array of (array of string)/(string)

Například:

bootcmd:
  - echo 192.168.1.130 us.archive.ubuntu.com >> /etc/hosts
  - [cloud-init-per, once, mymkfs, mkfs, /dev/vdb ]

runcmd spustí příkaz pouze při prvním spuštění. Může provádět příkazy zadané jako seznamy nebo řetězce. Všechny příkazy musí být v syntaxi yaml (proto nezapomeňte uvést všechny problematické znaky). Syntaxe je:

runcmd: 
   - array of (array of string)/(string)

Jako v následujícím příkladu:

runcmd:
 - [ ls, -l, / ]
 - [ sh, -xc, "echo $(date) ': hello world!'" ]
 - [ sh, -c, echo "=========hello world'=========" ]
 - ls -l /root

Konfigurace klíčů SSH

Konfiguraci SSH můžete spravovat pomocí cloud-init.

Autorizované klíče jsou klíče SSH uložené v domovském adresáři uživatele v .ssh/authorized_keys . Definují, které klíče se mohou připojit k tomuto konkrétnímu uživatelskému účtu v systému. Při konfiguraci uživatele pomocí ssh_authorized_key přidejte veřejné klíče jako seznam :

ssh_authorized_keys:
  - ssh_pub_key_1
  - ssh_pub_key_2

Uvedené klíče budou patřit konfigurovanému uživateli nebo prvnímu definovanému v uživatelském modulu.

Pokud již máte předem vygenerované soukromé klíče SSH, můžete je uložit na server. Cloud-init podporuje kryptosystémy s veřejným klíčem RSA, DSA a ECDS. Při přidávání klíčů SSH věnujte pozornost formátování – používejte konce řádků, bloky, svislé klíče a vždy zadejte BEGINING PRIVATE KEY a END PRIVATE KEY.


ssh_keys:
  rsa_private: |
    -----BEGIN RSA PRIVATE KEY-----
    your_rsa_private_key
    -----END RSA PRIVATE KEY-----

  rsa_public: your_rsa_public_key

Nastavení národního prostředí

Chcete-li nastavit a použít národní prostředí systému v celém systému, použijte cc_locale modul. Pomocí následujícího konfiguračního schématu definujte:

locale: What you want to configure as the system's locale.
locale_configfile: The path to the file where you want to write the locale configuration.

Definujte název hostitele

S cloud-init můžete nastavit název hostitele a FQDN (plně kvalifikovaný název domény). Existuje několik způsobů, jak to udělat:

  • Uveďte úplný název domény pomocí fqdn klíč.
  • Definujte název hostitele pomocí hostname klíč.
  • Použijte hostname klíč pro definici fqdn (nedoporučuje se).
  • Použijte oba hostname klíč a fqdn klíč.

Mezi konfigurační klíče pro definování názvu hostitele patří:

preserve_hostname: Use true or false to set whether to preserve the host name or allow altering. 
prefer_fqdn_over_hostname: Use true or false to set whether to force the use of FQDN in all distros.
fqdn: FQDN
hostname: FQDN/hostname

Ubuntu
  1. Co je uživatel Linuxu?

  2. Co jsou vyhrazené uživatelské účty v MySQL

  3. Jaký je uživatel debian-+?

  1. Jaký je účel uživatele „mysql.sys@localhost“.

  2. Co je na tomto kódu C zranitelné?

  3. Jaký je rozdíl mezi root a sudo?

  1. Co je Web 3.0?

  2. Dělá každý přihlášený uživatel?

  3. Vysvětlena manipulace s funkcí Bash