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 }}"