ansible:集中管理平臺

無服務、無agent、採用ssh管理遠程主機、多線程
一、配置文件/etc/ansible/ansible.cfg
二、管理方式
(1)ad-hoc 臨時命令
(2)playbook劇本php

遠程管理
1、新建一個目錄
[root@room8pc16 nsd1709]# mkdir ansi
[root@room8pc16 nsd1709]# cd ansi
二、建立配置文件
[root@room8pc16 ansi]# vim ansible.cfg
[defaults]
inventory = inventory # 定義被管理主機到哪一個文件中查找
remote_user = root # ssh到遠程主機的用戶
三、建立主機清單
[root@room8pc16 ansi]# vim inventory
[dbservers] # 定義主機組名
192.168.4.1 # 定義組成員主機mysql

[webservers]
192.168.4.2
192.168.4.3
四、列出主機命令,雖然all沒有定義,可是它是保留字,表示全部主機
[root@room8pc16 ansi]# ansible all --list-hosts
[root@room8pc16 ansi]# ansible dbservers --list-hosts
[root@room8pc16 ansi]# ansible webservers --list-hosts
五、測試到遠程主機的通訊
[root@room8pc16 ansi]# ansible all -m ping -k
六、在全部的主機上執行任意命令
[root@room8pc16 ansi]# ansible all -a 'touch /opt/abc.txt' -klinux

如下命令是遠程開機命令,與ansible無關
[root@room8pc16 ansi]# ether-wake -i enp2s0 xx:xx:xx:xx:xx:xxweb

七、yaml
(1)用空格縮進,tab鍵不容許
(2)註釋採用#
(3)列表成員使用- ,多項之間用逗號分開
(4)鍵值對採用冒號分隔
(5)字符串一般使用引號
爲了方便輸入,能夠設置vim
[root@room8pc16 ansi]# vim ~/.vimrc
autocmd FileType yaml setlocal sw=2 ts=2 et ai
八、使用playbook
(1)在全部主機上安裝vsftpd
[root@room8pc16 ansi]# vim a.yml

  • name: configure vsftpd
    hosts: all
    tasks:sql

    • name: install vsftpd
      yum:
      name: vsftpd
      state: latestshell

    • name: start vsftpd
      service:
      name: vsftpd
      state: started
      enabled: true
      九、語法檢查
      [root@room8pc16 ansi]# ansible-playbook --syntax-check a.yml
      十、執行playbook
      [root@room8pc16 ansi]# ansible-playbook a.yml -k
      十一、查看ansible模塊列表
      [root@room8pc16 ansi]# ansible-doc -l
      十二、查看yum模塊使用方法
      [root@room8pc16 ansi]# ansible-doc yum
      1三、不容許mysql服務器上出現apache
      [root@room8pc16 ansi]# vim a.yml 追加如下內容
  • name: remove httpd
    hosts: dbservers
    tasks:
    • name: remove apache web server
      yum:
      name: httpd
      state: absent
      [root@room8pc16 ansi]# ansible-playbook a.yml -k
      1四、使用lineinfile模塊
      [root@room8pc16 ansi]# vim b.yml

  • name: configure file
    hosts: all
    tasks:
    • name: configure hosts file
      lineinfile:
      path: /etc/hosts
      line: "192.168.4.254 host.tedu.cn host"
    • name: configure selinux file
      lineinfile:
      path: /etc/selinux/config
      regexp: '^SELINUX='
      line: 'SELINUX=permissive'
      [root@room8pc16 ansi]# ansible-playbook b.yml -k

1五、使用循環
[root@room8pc16 ansi]# vim lamp.yml

  • name: configure services
    hosts: dbservers
    tasks:
    • name: install services
      yum:
      name: "{{ item }}"
      state: latest
      with_items:
      • httpd
      • php
      • php-mysql
      • mod_ssl
      • mariadb-server
        1六、ansible中文站點 http://www.ansible.com.cn1七、經常使用模塊:yum/service/lineinfile/copy/file/stat/debug/firewalld/command/shell
相關文章
相關標籤/搜索