ansible

ansible facts

喜欢而已 提交于 2019-12-27 01:48:29
facts Facts通过访问远程系统获取相应的信息。 一个例子就是远程主机的IP地址或者操作系统是什么. 使用以下命令可以查看哪些信息是可用的: ansible hostname -m setup 这会返回巨量的变量数据,比如对于Ubutu 12.04系统,Ansible 1.4获取的信息显示如下: "ansible_all_ipv4_addresses": [ "REDACTED IP ADDRESS" ], "ansible_all_ipv6_addresses": [ "REDACTED IPV6 ADDRESS" ], "ansible_architecture": "x86_64", "ansible_bios_date": "09/20/2012", "ansible_bios_version": "6.00", "ansible_cmdline": { "BOOT_IMAGE": "/boot/vmlinuz-3.5.0-23-generic", "quiet": true, "ro": true, "root": "UUID=4195bff4-e157-4e41-8701-e93f0aec9e22", "splash": true }, "ansible_date_time": { "date": "2013-10-02", "day": "02", "epoch

Ansible自动化运维笔记3(playbook)

只谈情不闲聊 提交于 2019-12-27 01:47:07
1.基本语法 playbook文件格式为yaml语法.示例如下: 1.1 nginx.yaml --- - hosts: all tasks: - name: Install Nginx Package yum: name=nginx state=present - name: Copy Nginx.conf template: src=./nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=0644 validate='nginx -t -c %s' notify: - Restart Nginx Service handlers: - name: Restart Nginx Service service: name=nginx state=restarted ---第一行表示该文件是yaml文件,非必须,建议写上 hosts:all 定义该playbook针对的目标主机,all表示针对所有主机,这个参数支持Ad-Hoc模式的所有参数 tasks: 定义该playbook所有的tasks集合 name: Install Nginx Package定义一个task的名称,建议根据task实际任务命名 yum: name=nginx state=present 定义一个状态的action

Ansible 小手册系列 十(包含和角色)

冷暖自知 提交于 2019-12-27 01:45:17
一、包含 (include) 使用 include 模块来包含foo文件 tasks: - include: foo.yml --- foo.yml - name: test foo command: echo foo    include 还允许传递变量 - include: wordpress.yml wp_user=timmy - include: wordpress.yml vars: wp_user: timmy ssh_keys: - keys/one.txt - keys/two.txt    动态包含 循环引用3次 - include: foo.yml param={{item}} with_items: - 1 - 2 - 3    还可以使用动态变量引入task文件 - include: "{{inventory_hostname}}.yml"    动态包含的一些限制 • 您不能使用notify触发来自动态包含的处理程序名称。 • 您不能使用--start-at-task在动态包含内的任务开始执行。 • 仅存在于动态包含内的标记不会显示在-list-tags输出中。 • 只存在于动态包含内的任务将不会显示在-list-tasks输出中。 为了解决上面限制,2.1版本后引入了 static - include: foo.yml static: <yes|no

Ansible playbook roles

情到浓时终转凉″ 提交于 2019-12-27 01:44:38
1 概述 角色(roles):如果我们使用playbook写成一个文件,这个文件会很大,但是不方便组织,我们可以分组,把playbook根据功能,如handler,tasks等分门别类的放在在各自的子目录下,形成一个集合,就是角色,建议把角色放在固定的目录下,目录可以ansible的配置文件中的roles_path来定义。 目录结构清晰 可以重复使用 参考: http://www.ansible.com.cn/docs/playbooks_roles.html https://blog.51cto.com/ghbsunny/2047084 2 配置介绍 以层级结构组织Playbook的核心元素,成为roles。 核心元素包括以下几点: Hosts:主机 Tasks:任务列表 Variables:变量 Templates:包含了模板语法的文本文件; Handlers:由特定条件触发的任务; 在roles目录下,分别创建不同的目录,每个目录就是不同的角色,roles目录下是角色的集合: 如roles/创建如下的目录 mysql/ httpd/ nginx/ memcached/ roles模块的路径可以在配置文件/etc/ansible/ansible.cfg里roles_path定义. 每个角色,以特定的层级目录结构进行组织,例子如下: /roles/mysql/ files/

实例学习Ansible系列(18)服务管理的几种方式

孤者浪人 提交于 2019-12-26 19:34:57
Ansible中使用service等模块进行服务的管理,也可直接使用非幂等性的模块诸如shell等进行控制,这篇文章介绍常用的使用示例。 示例1: 使用service停止单个服务 比如停止etcd服务,示例如下 ## stop etcd service - name: stop etcd service service: name: etcd state: stopped 示例2: 使用service停止多个服务 比如停止kubernetes的master相关的服务,示例如下 ## stop kubernetes master service - name: stop master service service: name: "{{ item }}" state: stopped with_items: - kube-scheduler - kube-controller-manager - kube-apiserver 示例3: 无视错误 如果当当前机器上不存在service文件时,可能会出现如下类似的错误信息 fatal: [localhost]: FAILED! => {"changed": false, "msg": "Could not find the requested service flanneld: host"} 这种情况下可以使用ignore

实例学习Ansible系列(19)drop-if-exist不出错的写法

*爱你&永不变心* 提交于 2019-12-26 19:24:15
在脚本的世界里,数据库建表过程是最为常见的drop-if-exist的使用示例, drop-if-exist的使用场景 以数据库建表为例,无论事前存在与否都首先要Drop(删除原有表),然后创建新的表。实际上跟Ansible中的幂等性的原则基本上是一致的,无论是之前表存在还是不存在,用户所关心的是这个task执行之后表的存在。但是问题在于如果在于首次执行表不存在的时候会出现删除出错,然后需要用户自行判断原因是否还有其他可能,所以drop if exist的写法就是为了判断是否之前是否存在此表,这种方式在很多情况下都存在,比如创建database、tablespace,以及kubernetes中的namespace、clusterrolebinding等。 使用示例 比如如下写法就是一个clusterrolebinding的典型写法,先删除,然后再创建。原因就是如果不先删除,如果事前此clusterrolebinding存在的话就会无法创建。但是如果首次执行或者执行时不存在clusterrolebinding,删除的任务就会失败,但是结合ignore_errors的写法至少能够对应clusterrolebinding存在和不存在的两种情况。 - name: delete clusterrolebinding shell: "kubectl delete

实例学习Ansible系列(20)retry + sleep的常见写法

假如想象 提交于 2019-12-26 19:18:58
一定时间间隔内多次重试是脚本书写中的常见场景,一般就是循环+sleep,这篇文章以kubernetes的证书签名请求自动批准为例介绍一下这种常见的写法。 手动证书签名请求批准 使用kubectl get csr获取当前的证书签名请求 [root@host132 ansible]# kubectl get csr NAME AGE REQUESTOR CONDITION csr-4mnvj 12m kubelet-bootstrap Approved,Issued csr-b9mmc 12m kubelet-bootstrap Pending csr-z2hrz 12m system:node:192.168.163.133 Pending [root@host132 ansible]# 对pending中的请求进行approve动作 [root@host132 ansible]# kubectl certificate approve csr-b9mmc certificatesigningrequest.certificates.k8s.io/csr-b9mmc approved [root@host132 ansible]# kubectl get csr NAME AGE REQUESTOR CONDITION csr-4mnvj 14m kubelet-bootstrap

简单聊一聊Ansible自动化运维

故事扮演 提交于 2019-12-26 14:44:24
一、Ansible概述 Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。更为重要的是,它操作非常简单,即使小白也可以轻松上手,但它提供的功能又非常丰富,在运维领域,几乎可以做任何事。 1、Ansible特点 Ansible自2012年发布以来,很快在全球流行,其特点如下: Ansible基于Python开发,运维工程师对其二次开发相对比较容易; Ansible丰富的内置模块,几乎可以满足一切要求; 管理模式非常简单,一条命令可以影响上千台主机; 无客户端模式,底层通过SSH通信; Ansible发布后,也陆续被AWS、Google Cloud Platform、Microsoft Azure、Cisco、HP、VMware、Twitter等大公司接纳并投入使用; 二、Ansible的角色 使用者:如何使用Ansible实现自动化运维? Ansible工具集:Ansible可以实现的功能? 作用对象:Ansible可以影响哪些主机? 1、使用者 如下图所示:Ansible使用者可以采用多种方式和Ansible交互,图中展示了四种方式: CMDB:CMDB存储和管理者企业IT架构中的各项配置信息

Docker中Hadoop集群搭建

☆樱花仙子☆ 提交于 2019-12-26 14:12:38
使用腾讯云主机,docker构建集群测试环境。 环境 1、操作系统: CentOS 7.2 64位 网路设置 hostname IP cluster-master 172.18.0.2 cluster-slave1 172.18.0.3 cluster-slave2 172.18.0.4 cluster-slave3 172.18.0.5 Docker 安装 curl -sSL https://get.daocloud.io/docker | sh ##换源 ###这里可以参考这篇文章http://www.jianshu.com/p/34d3b4568059 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://67e93489.m.daocloud.io ##开启自启动 systemctl enable docker systemctl start docker 拉去Centos镜像 docker pull daocloud.io/library/centos:latest 使用 docker ps 查看下载的镜像 创建容器 按照集群的架构,创建容器时需要设置固定IP,所以先要在docker使用如下命令创建固定IP的子网 docker network create --subnet=172

Ansible安装实录

£可爱£侵袭症+ 提交于 2019-12-26 00:46:29
1. 安装python 下载python安装包 wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz tar xf Python-3.6.5.tar.xz 进入到Python文件目录 cd Python-3.6.5 创建安装make文件 ./configure --prefix=/opt/software/python3.6.5 --enable-optimizations 创建 make && make install 创建python3的软连接 ln -s /opt/software/python3.6.5/bin/python3.6 /usr/bin/python3 创建pip软连接 ln -s /opt/software/python3.6.5/bin/pip3.6 /usr/bin/pip3 看看pip要不要升级 python3 -m pip install --upgrade pip 安装下virtualenv python3 -m pip install virtualenv 网络不是很好的话,建议先从这里下载 https://files.pythonhosted.org/packages/05/f1