Ansible Playbooks基本使用
你将学到什么
- 如何使用playbook
- 如何编写playbook
- 如何使用roles
PlayBook使用
基础环境
### 64 位 Ubuntu 16.04 LTS,创建CentOS LXC容器web模拟托管节点
# ssh-keygen -t rsa
# apt-get install lxc
# apt-get install yum
# lxc-create -n centos -t centos -- -R 7
### 修改centos模板root密码
# chroot /var/lib/lxc/centos/rootfs passwd
# lxc-copy -n centos -N web -B aufs -s
# lxc-start -n web -d
### 进入容器
# lxc-console -n web
### 下面命令都在容器中执行,修改IP地址为10.0.3.200
# vi ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HOSTNAME=centos
NM_CONTROLLED=no
TYPE=Ethernet
NAME=eth0
IPADDR=10.0.3.200
NETMASK=255.255.255.0
GATEWAY=10.0.3.1
DNS1=114.114.114.114
简单的playbook
# mkdir playbook
# cd playbook
# vim hosts
[web]
192.168.124.240
# vim site.yml
- name: Sample
hosts: web
# 收集host facts信息
gather_facts: True
tasks:
# 在ansible托管节点上生成sample.txt文件
- name: Web
command: /bin/sh -c "echo 'web' > ~/sample.txt"
# 在ansible控制主机上生成sample.txt文件
- name: Local Web
local_action: command /bin/sh -c "echo 'local web' > ~/sample.txt"
执行playbook
# ansible-playbook -i hosts site.yml
样例playbook
下载样例
### 在主机中下在ansible样例
$ git clone https://github.com/ansible/ansible-examples.git
修改样例配置文件
$ cd ansible-examples/tomcat-standalone
$ vim hosts
[tomcat-servers]
10.0.3.200
### 配置ssh登入密码
$ vim group_vars/tomcat-servers
# Here are variables related to the Tomcat installation
http_port: 8080
https_port: 8443
# This will configure a default manager-gui user:
admin_username: admin
admin_password: 123456
ansible_ssh_pass: 123456
执行playbook
### 出错就反复执行,不过要加上出错提示中的--limit @/home/ubuntu/ansible-examples/tomcat-standalone/site.retry参数
# ansible-playbook -i hosts site.yml
出错处理
- 问题1
TASK [selinux : Install libselinux-python] *************************************
fatal: [10.0.3.200]: FAILED! => {"changed": false, "failed": true, "msg": "Failure talking to yum: Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again"}
to retry, use: --limit @/home/ubuntu/ansible-examples/tomcat-standalone/site.retry
解决办法
### 在容器中执行一遍yum update更新下源,就是更新下缓存,不需要安装软件
- 问题2
TASK [tomcat : insert firewalld rule for tomcat http port] *********************
fatal: [10.0.3.200]: FAILED! => {"changed": false, "failed": true, "msg": "firewalld and its python 2 module are required for this module"}
RUNNING HANDLER [tomcat : restart tomcat] **************************************
to retry, use: --limit @/home/ubuntu/ansible-examples/tomcat-standalone/site.retry
解决办法
### 为容器安装firewalld
# yum search firewalld |grep python
python-firewall.noarch : Python2 bindings for firewalld
# yum install python-firewall.noarch
# systemctl enable firewalld
# systemctl start firewalld
roles使用
roles标准结构
# tree ansible-sshd/
ansible-sshd/
├── CHANGELOG
├── defaults
│ └── main.yml
├── handlers
│ └── main.yml
├── LICENSE
├── meta
│ ├── 10_top.j2
│ ├── 20_middle.j2
│ ├── 30_bottom.j2
│ ├── main.yml
│ ├── make_option_list
│ ├── options_body
│ └── options_match
├── README.md
├── tasks
│ └── main.yml
├── templates
│ └── sshd_config.j2
├── tests
│ ├── inventory
│ ├── roles
│ │ └── ansible-sshd -> ../../.
│ └── test.yml
├── Vagrantfile
└── vars
├── Amazon.yml
├── Archlinux.yml
├── Debian_8.yml
├── Debian.yml
├── default.yml
├── Fedora.yml
├── FreeBSD.yml
├── OpenBSD.yml
├── RedHat_6.yml
├── RedHat_7.yml
├── Suse.yml
├── Ubuntu_12.yml
├── Ubuntu_14.yml
└── Ubuntu_16.yml
目录名 | 说明 |
---|---|
defaults | 为当前角色设定默认变量时使用此目录,应当包含一个main.yml文件 |
handlers | 此目录中应当包含一个main.yml文件,用于定义此角色用到的各handler,在handler中使用include包含的其它的handler文件也应该位于此目录中 |
meta | 应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系 |
tasks | 至少应该包含一个名为main.yml的文件,其定义了此角色的任务列表,此文件可以使用include包含其它的位于此目录中的task文件 |
templates | template模块会自动在此目录中寻找Jinja2模板文件 |
vars | 定义当前角色使用的变量 |
files | 存放由copy或script等模块调用的文件 |
tests | 在playbook中角色的使用样例 |
roles使用
# cat ansible-sshd/tests/test.yml
---
- hosts: localhost
become: true
roles:
- ansible-sshd
# cd ansible-sshd/tests/
# ansible-playbook test.yml
roles的任务执行顺序
### 首先执行meta下的main.yml文件内容
### 然后执行tasks下的main.yml文件内容
Ansible Playbooks基本使用的更多相关文章
- 3、Ansible playbooks(Hosts、Users、tasks、handlers、变量、条件测试(when、迭代)、templates)
Ansible playbooks playbook是由一个或多个“play”组成的列表.play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色.从根本上来讲 ...
- Ansible Playbooks 介绍 和 使用 二
目录 handlers playbook 案例 2 handlers vars 变量 setup facts 变量使用 案例 inventory 中定义变量 案例 条件测试 when 语句 案例 迭代 ...
- Ansible Playbooks 介绍 和 使用 一
目录 Ansible Playbooks Playbooks 组成部分: YAML 介绍 YAML 语法 Ansible 基础元素 变量 facts registre 通过命令传递变量 通过roles ...
- Ansible playbooks
Playbook是Ansible的配置,部署和编排语言. 他们可以描述您希望远程系统执行的策略,或一般IT流程中的一组步骤. 如果Ansible modules是您workshop的工具,则playb ...
- Ansible playbooks(任务、角色、模板、变色器、)
playbooks配置文件: [root@ansible ~]# vim /etc/ansible/hosts [test01] 192.168.200.114 [test02] 192.168.20 ...
- Ansible Playbooks 常用模块
官网链接:https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html ansible python module ...
- Ansible Playbooks入门介绍
1.目录结构 2.详细目录 3.主任务文件main.yaml 主任务文件main.yaml - name: print server name and user to remote testbox # ...
- Ansible Playbooks高级使用
文件操作 文件创建 file 用于设置文件/链接/目录的属性,或者删除文件/链接/目录 ### state如果是directory当目录不存在时会自动创建:如果是file当文件不存在时不会自动创建 - ...
- ansible playbooks loop循环
在一个task中循环某个操作 1.标准循环 - name: add several users user: name: "{{ item }}" state: present gr ...
随机推荐
- bzoj 2005: [Noi2010]能量采集 筛法||欧拉||莫比乌斯
2005: [Noi2010]能量采集 Time Limit: 10 Sec Memory Limit: 552 MB[Submit][Status][Discuss] Description 栋栋 ...
- Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined in class path resource [applicationContext.xml]
Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined ...
- eclipse自动提示功能没了的解决办法
由于重新配置了环境,并且eclipse也是装的4.2的,今天用的时候发现了,居然没有自动提示功能,也就是当一个对象居然点不出他的相关方法.后来网上搜索了下,成功的 办法是. 1.我window-> ...
- web网页打印的方法
WebBrowser.ExecWB的完整说明 个人感觉的:致命缺点-----------------仅仅支持ie浏览器 document.all.WebBrowser.ExecWB WebBrowse ...
- hihocoder-1284 机会渺茫(水题)
机会渺茫 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在追求一名学数学的女生小Z.小Z其实是想拒绝他的,但是找不到好的说辞,于是提出了这样的要求:对于给定的两 ...
- 批量清除过期的binlog释放磁盘空间
方案,总共24台db,一台台进去清理肯定不行,得需要写一个脚本,进行批量操作,方案思路大概如下 1, 建立双master列表masterlist; 一个master一行. 2,远程获取master ...
- MongoDB优化之三:如何排查MongoDB CPU利用率高的问题
遇到这个问题,99.9999% 的可能性是「用户使用上不合理导致」,本文主要介绍从应用的角度如何排查 MongoDB CPU 利用率高的问题. Step1: 分析数据库正在执行的请求 用户可以通过 M ...
- MVC4.0 里的分析器错误
这种错误有很多,今天碰到了,代码段写在if里就回出错,应该是认冲了吧 @if (Web.Common.UserInfo.CurrentUserInfo != null) ...
- MS SQL 取分组后的几条数据
SELECT uploaddate ,ptnumber ,instcount FROM ( SELECT ROW_NUMBER() OVER( PARTITION BY uploaddate ORDE ...
- [hdu4734]F(x)数位dp
题意:求0~f(b)中,有几个小于等于 f(a)的. 解题关键:数位dp #include<bits/stdc++.h> using namespace std; typedef long ...