Ansible 運維工具

 

 

安裝方式:php

  PIP方式:html

    yum install python-pip python-devel -y        #安裝python-pip程序包及python-develpython

    yum install gcc glibc-devel zlib-devel rpm-build openssl-devel -y         #確保服務器的gcc,glibc開發環境均已安裝mysql

    pip install --upgrade pip        #升級本地PIP至最新版本linux

    pip install ansible -upgrade     #安裝Ansiblesql

    #執行ansible --version,有相似返回結果表示安裝成功並可正常使用,其餘驗證安裝是否成功的方式也同樣,都可執行ansible-versionshell

 

 

  YUM方式:vim

    #需事先安裝EPEL源後方可找到並安裝Ansiblebash

    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm服務器

    #安裝Ansible

    yum  install ansible -y

 

 #Ansible主機清單在/etc/ansible/hosts

~]# vim /etc/ansible/hosts

  

 

 #ansible 的主配置文件存放在 /etc/ansible/ansible.cfg,這裏就展現我零時配的選項

~]# vim /etc/ansible/ansible.cfg

  

 #shell模塊,能夠向遠程傳輸shell命令並執行;

 #登錄數據並執行命令,配置以下

~]# ansible Aliyun -m shell -a "mysql  -u{{db_user}}  -p{{db_passwd}}  -e 'show databases;'"

 

本身經常使用的一些命令:

   #檢測全部主機存活狀況,all或 * 號功能相同

   ~]# ansible all -m ping

   ~]# ansible '*' -m ping

 

  #多個組之間同時執行,相互之間用「 :」(冒號)分割

   ~]# ansible app:app2 -m ping

 

  #模糊匹配以HuBei開頭的全部主機

  ~]# ansible HuBei* -m ping

 

  #copy模塊,傳輸本地文件到對端主機

  ~]# ansible app -m copy -a 'src=local_path dest=goal_path'

 

  #unarchive模塊,批量傳輸文件並解壓zip包

  ~]# ansible all -m unarchive -a 'src=7.zip dest=/data/HD/' -s

 

   #authorized_keys模塊,批量部署證書文件(先批量建立用戶後再執行),回車後輸入密鑰密碼(-s參數表示切換root權限

  ~]# ansible all -m authorized_key -a "user=ben exclusive=true manage_dir=true key='$(</home/ben/.ssh/id_rsa_ben.pub)'" -k -s

 

 

Playbook:

批量建立用戶

---
- hosts: "{{ host }}"
  remote_user: root
  gather_facts: False
  sudo: yes

  tasks:
  - name: Create user
    user: name={{ user }}  password={{ password | password_hash('sha512') }} state=present
    #user: name={{ user }}  group={{groups}} password={{ password | password_hash('sha512') }} state=present

  - name: Create ssh directory
    file: path=/home/{{user}}/.ssh state=directory

  - name: Copy authorized_keys
    copy: src=/etc/ansible/user/id_rsa_{{user}}.pub dest=/home/{{user}}/.ssh/authorized_keys mode=0600

  - name: Change user attribute
    file: path=/home/{{user}} owner={{user}} group={{user}} recurse=yes

 執行:ansible-playbook add_user.yml -e "user=test password=123456 host=all"

 

批量刪除用戶

---
- hosts: "{{host}}"
  remote_user: root
  gather_facts: False
  sudo: yes

  tasks:
  - name: Del user
    user: name={{user}} state=absent remove=yes
    async: 100
    poll: 0
    register: result

  - debug: var=result

  - async_status: jid={{ result.ansible_job_id }}
    register: job_result
    until: job_result.finished
    retries: 30

 執行:ansible-playbook del_user.yml -e "user=test host=all"

 

 

 

解決每次用密鑰執行Ansible命令時都要輸入密碼問題

    Keychain是一個用來方便管理 SSH 密鑰對的程序,它能盡最大努力去減小對用戶的打擾。實際上,它就是一個 shell 腳本,驅動 ssh-agent 或者 gpg-add 來工做。一個值得注意的特性是,keychain 在多個會話中重複使用同一個 ssh-agent 進程。這意味着您只須要在機器啓動時輸入一次密碼短語便可。

    #使用前要開啓vim  /etc/ssh/ssh_config中的一個配置

      ForwardAgent yes

    ~]# systemctl restart sshd

      #獲取keychain文件

        ~]# wget http://www.funtoo.org/archive/keychain/keychain-2.7.1.tar.bz2

     ~]# tar -xf keychain-2.7.1.tar.bz2

     ~]# cd keychain-2.7.1

     keychain-2.7.1]# install -m 0755 keychain /usr/bin/

 

    #編輯環境變量,在末尾添加以下兩行

     ~]# vim ~/.bash_profile

       eval $(keychain --eval --agents ssh -Q --quiet /apps/ben)
       eval `keychain --eval --agents ssh /apps/ben`  #添加這項配置前要把key文件設置爲400權限,不然會報錯

      

      

 

參考資料:

 https://wiki.archlinux.org/index.php/SSH_keys_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#Keychain

 https://www.ibm.com/developerworks/cn/linux/security/openssh/part2/index.html

相關文章
相關標籤/搜索