Ansible搭建及配置使用


一、ansible的搭建及配置
1、wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
2、yum clean all && yum makecache
3、yum install ansible -y
4、ansible --version
二、配置设定免密登录及验证
1、vim /etc/ansible/hosts
[node1]
192.168.243.129
2、ssh-keygen -t rsa 生成秘钥
3、cd /root/.ssh/ && ssh-copy-id -i id_rsa.pub root@192.168.243.129 将密码分发给对应的主机
4、ssh root@192.168.243.129 验证无需输密码登录
5、ansible node1 -m ping 测试查看管理的主机通不通
192.168.243.129 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}

三、ansible Playbook语法
1、Playbook核心元素
Hosts 执行的远程主机列表
Tasks 任务集
Varniables 内置变量或自定义变量在playbook中调用
Templates 模板,即使用模板语法的文件,比如配置文件等
Handlers 和notity结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行
tags 标签,指定某条任务执行,用于选择运行playbook中的部分代码。

2、创建playbook文件及相关解释

[root@ansible ~]# cat playbook01.yml

---                       #固定格式
- hosts: node1     #定义需要执行主机
  remote_user: root       #远程用户
  vars:                   #定义变量
    http_port: 8088       #变量

  tasks:                             #定义一个任务的开始
    - name: create new file          #定义任务的名称
      file: name=/tmp/playtest.txt state=touch   #调用模块,具体要做的事情
    - name: create new user
      user: name=test02 system=yes shell=/sbin/nologin
    - name: install package
      yum: name=httpd
    - name: config httpd
      template: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf
      notify:                 #定义执行一个动作(action)让handlers来引用执行,与handlers配合使用
        - restart apache      #notify要执行的动作,这里必须与handlers中的name定义内容一致
    - name: copy index.html
      copy: src=/var/www/html/index.html dest=/var/www/html/index.html
    - name: start httpd
      service: name=httpd state=started
  handlers:                                    #处理器:更加tasks中notify定义的action触发执行相应的处理动作
    - name: restart apache                     #要与notify定义的内容相同
      service: name=httpd state=restarted      #触发要执行的动作

3、ansible-playbook的用法 (执行yml文件)
ansible-playbook playbook01.yml -C
ansible-playbook playbook01.yml -v
[root@ansible PlayBook]# ansible-playbook -h
ansible-playbook常用选项:
--check or -C \\只检测可能会发生的改变,但不真正执行操作
--list-hosts \\列出运行任务的主机
--list-tags \\列出playbook文件中定义所有的tags
--list-tasks \\列出playbook文件中定义的所以任务集
--limit \\主机列表 只针对主机列表中的某个主机或者某个组执行
-f \\指定并发数,默认为5个
-t \\指定tags运行,运行某一个或者多个tags。(前提playbook中有定义tags)
-v \\显示过程 -vv -vvv更详细

4、ansible-doc的用法
[root@ansible ~]# ansible-doc -l \\列出所有模块
[root@ansible ~]# ansible-doc modulename \\查询某个模块使用方法
[root@ansible ~]# ansible-doc -s modulename \\查询某个模块使用方法 (以简洁的方式)

5、示例,批量创建用户
vim useradd.yml

---
- hosts: node1
  become: yes
  vars:
    user_list: ['lihu11','lihu22','lihu33']
  tasks:
    - name: create user
      user:
        name: "{{ item }}"
        password: "{{ '123456'| password_hash('sha512') }}"
        state: present
      with_items:
        - "{{ user_list }}"