Ansible, et gratis og open source Python-baseret projekt af Red Hat, er en populær platform til konfigurationsstyring og IT-automatisering.
Det er multi-platform og kan arbejde med de fleste moderne operativsystemer, herunder Linux, Windows og Mac. Det understøtter et deklarativt sprog skrevet i YAML eller YAML Ain’t Markup Language til at beskrive systemkonfigurationen.
Ansible har sammen med andre moderne konfigurationsstyringsplatforme revolutioneret IT-automatisering og industristandarder. Konfigurationsstyringsværktøjer er blevet en del af DevOps-værktøjssættet og er en uadskillelig del af enhver moderne it-proceslivscyklus. Dette gælder for ethvert moderne infrastrukturmiljø, uanset om det er bygget på et lokalt, hybrid- eller cloudmiljø. Ikke kun for DevOps, men Ansible kan også hjælpe med at automatisere mange daglige opgaver udført af en systemadministrator.
En af fordelene ved at bruge Ansible er, at den er agentfri og ikke kræver meget for at komme i gang udover SSH-adgang til målmaskinen og den understøttede version af Python, som allerede er installeret som standard på de fleste moderne operativsystemer. Da det er et letvægtsværktøj, kan det også implementeres og bruges med en arv til innovative systemer.
Indholdsfortegnelse
Anvendelser af Ansible
Orkestrering
Ansible er et valgfrit værktøj til at orkestrere forskellige systemadministrations- og implementeringsopgaver. Playbooks tillader brug af de samme orkestreringsarbejdsgange på tværs af forskellige projekter, og YAML-baserede konfigurationsdata tillader lagring og versionering af din infrastruktur på Git-lageret eller enhver understøttet versionskontrolplatform.
Applikationsimplementering
Uanset om det er en simpel kodeapplikation med få linjer eller en tung implementering med flere niveauer, gør Ansible det muligt at automatisere ende-til-ende applikationsimplementeringslivscyklussen.
Sikkerhed og overholdelse
Ansible kan også hjælpe med at sikre, at dine systemer er sikret i henhold til din organisations retningslinjer og i overensstemmelse med industristandarder. Det kan køre på tværs af tusindvis af servere, generere en revision og rette disse sikkerhedshuller, hvilket giver administratoren fuldstændig kontrol over miljøet.
Lad os nu se på nogle af de almindelige Sysadmin-opgaver, du kan automatisere med Ansible.
Kopier filer fra et lokalt eller eksternt system
Som systemadministrator er det almindeligt at kopiere filer fra en mappe til en anden. Konfigurationsfiler skal ofte kopieres til fjernservere, eller nogle gange skal vi flytte filer fra en fjernplacering til en anden.
Ansible kopimodul kan hjælpe dig med at udføre disse opgaver i en playbook.
Det er en rutineopgave for en sysadmin at kende status for administrerede servere og udføre foruddefinerede handlinger i henhold til organisationens politikker. En sådan opgave er at kende serverens oppetid. Med Ansible kan vi nemt hente oppetidsværdier og printe dem sammen. Et eksempel på kopiering af ntp-konfiguration fra lokal til en ekstern server ved hjælp af kopimodul er vist nedenfor:
--- - hosts: all gather_facts: no become: yes tasks: - name: Copy a new ntp configuration file and back up the original, if it differs copy: src: ./ntp.conf dest: /etc/ntp.conf owner: root group: root mode: '0644' backup: yes
Konfigurer yderligere cron-job
Opsætning af planlagte job til at udføre rutineopgaver er en del af administrationen af enhver server. Du kan planlægge automatisk sikkerhedskopiering, patching, revision osv. på bestemte tidspunkter på dagen eller måneden automatisk og efterlade produktiv tid til din brug.
cron er et sådant værktøj i Linux, der understøtter planlægning, og Ansible kan hjælpe dig med at tilføje eller ændre disse job. Som et eksempel viser nedenstående afspilningsbog, hvordan du nemt kan indstille et rsync-job som root på nogle eller alle dine servere ved hjælp af Ansible.
--- - hosts: all gather_facts: no become: yes tasks: - name: Deploy cron job cron: name: "Set rsync job" user: root minute: "5" hour: "4" job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"
Administrer diske og filsystemer
Ansible kan bruges til at administrere diske, partitionslayout, filsystemer og monteringer, inklusive /etc/fstab på Linux-servere. Forskellige Ansible modul gør dette muligt. Her er et eksempel, der opretter en partition på en 100 GB disk, formaterer den med ext4 filsystem opretter en ny mappe til montering af partitionen og til sidst monterer den på en given mappe. En post i /etc/fstab oprettes også gennem midlertidig eller permanent montering afhængigt af modulindstillinger.
--- - hosts: all gather_facts: no become: yes tasks: - name: Create a partition parted: device: /dev/sdb number: 1 part_end: "100%" state: present - name: Format new partition filesystem: fstype: ext4 dev: /dev/sdb1 - name: Create mount directory file: path: /data state: directory - name: Mount partition mount: path: /data src: /dev/sdb1 fstype: ext4 state: mounted
Saml serverlogfiler
At opbevare logfiler på et bekvemt sted er nogle gange afgørende for sikkerhed, revision samt analyse. Ansible tillader indsamling af logfiler fra forskellige servere i dit virksomhedsmiljø og opbevarer dem nemt på din definerede placering. Her er spillebogen for at opnå dette:
--- - hosts: all gather_facts: no become: yes tasks: - name: Find logs find: paths: /var/log/ patterns: '*.log' recurse: yes register: _logs - name: Fetch logs fetch: src: "{{ item.path }}" dest: /tmp/logs with_items: "{{ _logs.files }}"
Installer eller fjern pakker og software
Det kræves ofte, at pakker skal installeres på brugeranmodninger eller som en del af indledende server builds. Vi skal muligvis også fjerne visse pakker, som ikke længere er nødvendige eller har nogle kritiske fejl osv. Ansible giver dig mulighed for nemt at installere eller fjerne pakker uden besværet med at gå til hver server og køre manuelle kommandoer. Her er et eksempel, der demonstrerer installation og fjernelse af en pakke hver til Ubuntu og RHEL/CentOS-baserede Linux-servere.
--- - hosts: ubuntu gather_facts: no tasks: - name: Install lsof utility apt: pkg: lsof state: latest sudo: yes - name: Remove ARP Scan utility apt: pkg: arp-scan state: absent sudo: yes --- - hosts: centos gather_facts: no tasks: - name: Install lsof utility yum: pkg: lsof state: latest sudo: yes - name: Remove ARP Scan utility yum: pkg: arp-scan state: absent sudo: yes
Håndtering af brugere
Brugere og grupper danner den grundlæggende struktur, omkring hvilken Unix/Linux-baserede systemer administrerer adgang og tilladelser. I en stor organisation kan det være en stor udfordring at administrere brugere og grupper på trods af automatisering for at understøtte miljøet.
Med Ansible har systemadministratoren et fremragende værktøj til at oprette, ændre og slette brugere og grupper med alle forskellige muligheder understøttet i OS.
Her er et simpelt eksempel, der viser oprettelse og sletning af brugere og grupper ved hjælp af Ansible. Når denne afspilningsbog er kørt, vil målservere have gruppeA og gruppeB oprettet med givne GID’er, mens bruger1 vil blive fjernet, hvis den er til stede. En ny bruger uden shell vil blive oprettet som bruger2 med givet UID, tildelte grupper og låst adgangskode.
--- - hosts: all gather_facts: no become: yes tasks: - group: gid: 12310 name: groupA state: present - group: gid: 12311 name: groupB state: present - user: name: user1 state: absent - user: name: user2 uid: 12427 shell: /bin/false password_lock: yes groups: groupA, groupB
Håndtering af tjenester
Tjenester er procesdæmoner, der kører i baggrunden og tjener nogle tjenester som sshd, der giver SSH-forbindelse osv. Ved hjælp af Ansible kan du administrere system- og brugertjenester, såsom at starte, stoppe og genstarte dem. Her er et eksempel på en spillebog for at demonstrere det:
--- - hosts: all gather_facts: no become: yes tasks: - name: Restart ssh daemon service: name: ssh state: restarted - name: Restart sssd daemon service: name: sssd state: stopped - name: Restart httpd daemon service: name: httpd state: started
I ovenstående eksempel vil SSH-tjenesten blive genstartet, mens SSSD-tjenesten stoppes næste gang. httpd-dæmonen startes mod slutningen. Da Ansible er idempotent, vil enhver tjeneste, der allerede er startet eller stoppet, ikke blive ændret, mens genstart altid ændrer tjenestetilstand. Husk at tjekke tjenestenavnet, da forskellige Linux-distributioner bruger andre navne selv for den samme tjeneste som ssh og sshd.
Resumé 👨💻
Ansible gør livet for en systemadministrator let ved at give dig mulighed for at udføre gentagne og tidskrævende opgaver på en automatiseret måde og reducere menneskelige fejl og indsats. Yderligere vil det muliggøre lagring af konfigurationsdata i et centralt kodelager som Git, hvilket giver flere brugere mulighed for at samarbejde og gennemgå hver aktivitet.
For at læse mere om Ansible og dets omfattende sæt af moduler, se dens dokumentation.