Ansible, ett gratis Python-baserat projekt med öppen källkod av Red Hat, är en populär plattform för konfigurationshantering och IT-automatisering.
Det är flera plattformar och kan fungera med de flesta moderna operativsystem, inklusive Linux, Windows och Mac. Den stöder ett deklarativt språk skrivet i YAML eller YAML Ain’t Markup Language för att beskriva systemkonfiguration.
Ansible har tillsammans med andra moderna plattformar för konfigurationshantering revolutionerat IT-automation och industristandarder. Konfigurationshanteringsverktyg har blivit en del av DevOps verktygsuppsättning och är en oskiljaktig del av alla moderna IT-processers livscykel. Detta är tillämpligt för alla moderna infrastrukturmiljöer, oavsett om de är byggda på en lokal, hybrid- eller molnmiljö. Inte bara för DevOps, utan Ansible kan också hjälpa till att automatisera många dagliga uppgifter som görs av en systemadministratör.
En av fördelarna med att använda Ansible är att den är agentfri och inte behöver mycket för att komma igång förutom SSH-åtkomst till målmaskinen och den version av Python som stöds, som redan är installerad som standard på de flesta moderna operativsystem. Eftersom det är ett lättviktsverktyg kan det också distribueras och användas med ett arv från innovativa system.
Innehållsförteckning
Användningar av Ansible
Orkestrering
Ansible är ett valfritt verktyg för orkestrering av olika systemadministrations- och distributionsuppgifter. Playbooks tillåter användning av samma orkestreringsarbetsflöden över olika projekt och YAML-baserad konfigurationsdata tillåter lagring och versionshantering av din infrastruktur på Git repository eller någon versionskontrollplattform som stöds.
Applikationsdistribution
Oavsett om det är en enkel kodapplikation med några rader eller en tung distribution med flera nivåer, gör Ansible det möjligt att automatisera livscykeln för end-to-end-applikationsdistribution.
Säkerhet och efterlevnad
Ansible kan också hjälpa till att säkerställa att dina system är säkrade enligt din organisations riktlinjer och överensstämmer med industristandarder. Det kan köras över tusentals servrar, generera en revision och åtgärda dessa säkerhetshål, vilket ger administratören fullständig kontroll över miljön.
Låt oss nu titta på några av de vanliga Sysadmin-uppgifterna som du kan automatisera med Ansible.
Kopiera filer från ett lokalt eller fjärrsystem
Som systemadministratör är det vanligt att kopiera filer från en katalog till en annan. Konfigurationsfiler måste ofta kopieras till fjärrservrar, eller ibland måste vi flytta filer från en fjärrplats till en annan.
Ansible kopieringsmodul kan hjälpa dig att göra dessa uppgifter i en spelbok.
Det är en rutinuppgift för en systemadministratör att känna till statusen för hanterade servrar och utföra fördefinierade åtgärder enligt organisationens policyer. En sådan uppgift är att känna till serverns drifttid. Med Ansible kan vi enkelt hämta upptidsvärden och skriva ut dem tillsammans. Ett exempel på att kopiera ntp-konfiguration från lokal till en fjärrserver med kopieringsmodul visas nedan:
--- - 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
Konfigurera ytterligare cron-jobb
Att ställa in schemalagda jobb för att utföra rutinuppgifter är en del av att hantera vilken server som helst. Du kan schemalägga automatiska säkerhetskopieringar, patchning, granskning, etc., under vissa tider på dagen eller månaden automatiskt och lämna produktiv tid för din användning.
cron är ett sådant verktyg i Linux som stöder schemaläggning, och Ansible kan hjälpa dig att lägga till eller ändra dessa jobb. Som ett exempel visar spelboken nedan hur du enkelt kan ställa in ett rsync-jobb som root på några eller alla dina servrar med 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"
Hantera diskar och filsystem
Ansible kan användas för att hantera diskar, partitionslayouter, filsystem och monteringar, inklusive /etc/fstab på Linux-servrar. Different Ansible-modul gör detta möjligt. Här är ett exempel som skapar en partition på en 100 GB disk, formaterar den med ext4 filsystem skapar en ny katalog för att montera partitionen och slutligen monterar den på en given katalog. En post i /etc/fstab skapas också genom temporär eller permanent montering beroende på modulalternativ.
--- - 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
Samla serverloggar
Att förvara loggar på en bekväm plats är ibland avgörande för säkerhet, revision och analys. Ansible tillåter insamling av loggar från olika servrar i din företagsmiljö och håller dem på din definierade plats enkelt. Här är spelboken för att uppnå detta:
--- - 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 }}"
Installera eller ta bort paket och programvara
Paket måste ofta installeras på användarförfrågningar eller som en del av initiala serverbyggen. Vi kan också behöva ta bort vissa paket som inte längre behövs eller har några kritiska buggar etc. Ansible låter dig enkelt installera eller ta bort paket utan att behöva gå till varje server och köra manuella kommandon. Här är ett exempel som visar installation och borttagning av ett paket vardera för Ubuntu och RHEL/CentOS-baserade Linux-servrar.
--- - 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
Hantera användare
Användare och grupper utgör den grundläggande strukturen kring vilken Unix/Linux-baserade system hanterar åtkomst och behörigheter. I en stor organisation kan det vara en stor utmaning att hantera användare och grupper trots automatisering för att stödja miljön.
Med Ansible har systemadministratören ett utmärkt verktyg för att skapa, ändra och ta bort användare och grupper med alla olika möjligheter som stöds i OS.
Här är ett enkelt exempel som visar skapandet och raderingen av användare och grupper med Ansible. Efter att den här spelboken har körts kommer målservrar att ha gruppA och gruppB skapade med givna GID:n medan användare1 kommer att tas bort, om det finns. En ny användare utan skal kommer att skapas som användare2 med givet UID, tilldelade grupper och låst lösenord.
--- - 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
Hantera tjänster
Tjänster är processdemoner som körs i bakgrunden och tjänar vissa tjänster som sshd som tillhandahåller SSH-anslutning etc. Med Ansible kan du hantera system- och användartjänster, som att starta, stoppa och starta om dem. Här är ett exempel på spelbok för att visa 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 exemplet ovan kommer SSH-tjänsten att startas om medan SSSD-tjänsten stoppas nästa gång. httpd-demonen startas mot slutet. Eftersom Ansible är idempotent, kommer alla tjänster som redan har startat eller stoppas inte att ändras medan omstart alltid ändrar tjänstens tillstånd. Kom ihåg att kontrollera tjänstens namn eftersom olika Linux-distributioner använder andra namn även för samma tjänst som ssh och sshd.
Sammanfattning 👨💻
Ansible gör livet för en systemadministratör enkelt genom att låta dig utföra upprepade och tidskrävande uppgifter på ett automatiserat sätt och minska mänskliga fel och ansträngning. Vidare kommer det att möjliggöra lagring av konfigurationsdata i ett centralt kodlager som Git, vilket gör att flera användare kan samarbeta och granska varje aktivitet.
För att läsa mer om Ansible och dess omfattande uppsättning moduler, se dess dokumentation.