ansible

Ansible-安装配置

五迷三道 提交于 2020-03-08 23:30:43
主机规划 主机名称 操作系统版本 内网IP 外网IP(模拟) 安装软件 ansi-manager CentOS7.5 172.16.1.180 10.0.0.180 ansible ansi-haproxy01 CentOS7.5 172.16.1.181 10.0.0.181 ansi-haproxy02 CentOS7.5 172.16.1.182 10.0.0.182 ansi-web01 CentOS7.5 172.16.1.183 10.0.0.183 ansi-web02 CentOS7.5 172.16.1.184 10.0.0.184 ansi-web03 CentOS7.5 172.16.1.185 10.0.0.185 在实际使用中并不需要对ansible配置进行修改,或者说只有需要的时候才修改ansible配置。 添加用户账号 说明: 1、 运维人员使用的登录账号; 2、 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放; 3、 该用户也被 ansible 使用,因为几乎所有的生产环境都是禁止 root 远程登录的(因此该 yun 用户也进行了 sudo 提权)。 1 # 使用一个专门的用户,避免直接使用root用户 2 # 添加用户、指定家目录并指定用户密码 3 # sudo提权 4 # 让其它普通用户可以进入该目录查看信息 5

Ansible学习踩坑

佐手、 提交于 2020-03-08 01:04:57
终于到了需要上Ansible的时候了,之前由于需求不强烈没有做,从今天起陆续记录学习。 常用ansible命令 查看组中的机器 ansible <group_name> list 查看内存使用(shell模块) ansible <host_name/group_name> -m command -a 'free -h' 查看主机磁盘容量(command模块) ansible <host_name/group_name> -m shell -a 'df -h' 报错解决记录 ansible all -m ping 失败 执行上述命令,是检测被主机的存活状态时,出现如下报错信息: "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)." 执行下面的命令显示更详细 的信息 ansible -m ping all -vvv 结果中有如下 <websrv.internal.org> ESTABLISH SSH CONNECTION FOR USER: None ansible连接被管主机(此处是websrv.internal.org)没有使用明确的用户名。因此,在ansible的配置文件/etc/ansible

Ansible-基本概述

岁酱吖の 提交于 2020-03-05 23:32:51
为什么要自动化运维 纯手动软件安装部署方式 我们以 10 台机器部署 Nginx 为例。部署步骤如下: 1、通过 ssh 登录一台机器; 2、yum install -y nginx 或者 获取安装包自行编译安装; 3、配置 Nginx 4、启动 Nginx ,如有必要加入开机自启动; 5、退出登录 上面步骤重复 10 次,即可完成我们的部署要求。 痛点: 1、重复操作频繁,增加了人工成本和后续维护成本; 2、机器太多时,容易落下某些机器且未操作,进而产生后续影响; 3、人工频繁操作时可能有操作步骤不完整的情况,造成该机器和其他机器状态不一致。 自动化运维软件安装部署方式 我们还是以 10 台机器部署 Nginx 为例。部署步骤如下: 1、在控制机或者称为管理机的机器上写好相关脚本。「当然该脚本我们是测试通过的,脚本中包括安装、配置、启动等等」 2、将写好的脚本从控制机推送到受控机; 3、在受控机执行相关脚本,根据脚本部署我们需要的 Nginx。 好处 1、减少了重复操作,提高了工作效率; 2、减小了出错几率,提高了准确率; 3、所有机器状态一致,降低了后续维护成本。 自动化运维使用场景 软件安装部署 配置同步 代码变更 命令执行 任务执行 Ansible 介绍 Ansible是什么 Ansible 是基于Python开发,集合了众多运维工具(puppet、cfengine

Ansible自动化运维学习之四:playbook和roles

隐身守侯 提交于 2020-03-04 22:19:16
备注:文章事例部分代码会出现不对齐的情况,使用时,请注意格式对齐!! 第4 章 playbook和roles 4.1 ansible-playbook常用命令说明 ansible-playbook --help Usage: ansible-playbook playbook.yml Options: -e EXTRA_VARS,--extra-vars=EXTRA_VARS # 设置额外的变量,格式为key/value。-e "key=KEY", # 如果是文件方式传入变量,则-e "@param_file" --flush-cache # 清空收集到的fact信息缓存 --force-handlers # 即使task执行失败,也强制执行handlers --list-tags # 列出所有可获取到的tags --list-tasks # 列出所有将要被执行的tasks -t TAGS,--tags=TAGS # 以tag的方式显式匹配要执行哪些tag中的任务 --skip-tags=SKIP_TAGS # 以tag的方式忽略某些要执行的任务。被此处匹配的tag中的任务都不会执行 --start-at-task=START_AT_TASK # 从此task开始执行playbook --step # one-step-at-a-time:在每一个任务执行前都进行交互式确认 -

ansbile playbook

大城市里の小女人 提交于 2020-03-03 22:03:00
playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让它们联同起来按事先编排的机制同唱一台大戏。下面是一个简单示例。 - hosts: webnodes vars: http_port: 80 max_clients: 256 remote_user: root tasks: - name: ensure apache is at the latest version yum: name=httpd state=latest - name: ensure apache is running service: name=httpd state=started handlers: - name: restart apache service: name=httpd state=restarted 7.1 playbook基础组件 7.1.1 Hosts和Users playbook中的每一个play的目的都是为了让某个或某些主机以某个指定的用户身份执行任务。hosts用于指定要执行指定任务的主机,其可以是一个或多个由冒号分隔主机组;remote

ansible playbook相关

淺唱寂寞╮ 提交于 2020-03-03 21:23:51
playbook(剧本) 格式 playbook的编写应遵循yaml格式的语法 列表 - 字典 k:v 后缀名为 .yaml 或 .yml # 简单示例 - hosts: web # 主机ip/分组名 remote_user: root # 用户身份 tasks: - name: installlxml # 任务名 pip: name=lxml # 使用的模块: 参数 # 注: 执行时使用ansible-playbook xx.yml 传参 # 1. 直接给playbook传参 - hosts: web remote_user: root tasks: - name: installl{{ module_name }} pip: name={{ module_name }} # 2. 在playbook中以vars方式传参 - hosts: web remote_user: root vars: - module_name: requests tasks: - name: installl{{ module_name }} pip: name={{ module_name }} # 注: 执行时使用ansible-playbook -e module_name xx.yml # 3. 在/etc/ansible/hosts 文件中传参 [web] 192.168.80.128

开发逻辑需求简单记录

一曲冷凌霜 提交于 2020-03-03 17:16:50
1 ansible 动态inventory 一期需求:命令行传入 domain,进行ansible 管理服务器, 由于CMDB中服务器包含 tag=[生产,测试,开发,预生产] 故传domain时格式暂定为: tag_domain : 生产_物联 注:cmdb host_host表中,use,domain,group为字段为关键词,使用时需注意,应该改造 来源: https://www.cnblogs.com/yunqingtuo/p/12402999.html

Ansible常用模块

爷,独闯天下 提交于 2020-03-03 15:12:12
2015年底270多个模块,2016年达到540个,2018年01月12日有1378个模块,2018年07月15日1852个模块,2019年05月25日(ansible 2.7.10)时2080个模块,2020年03月02日有3387个模块 虽然模块众多,但最常用的模块也就2,30个而已,针对特定业务只用10几个模块 文档参考: anisble模块 . Command模块 功能:在远程主机执行命令,此为默认模块,可忽略-m选项 注意:此命令不支持 $VARNAME < > | ; & 等,用shell模块实现 例: [ root@ansible ~ ] ansible websrvs -m command -a 'chdir=/etc cat centos-release' 10.0.0.7 | CHANGED | rc = 0 >> CentOS Linux release 7.7.1908 ( Core ) 10.0.0.8 | CHANGED | rc = 0 >> CentOS Linux release 8.1.1911 ( Core ) [ root@ansible ~ ] ansible websrvs -m command -a 'chdir=/etc creates=/data/f1.txt cat centos-release' 10.0.0.7 |

Is there a way to use a regular expression to match hosts in ansible?

拥有回忆 提交于 2020-03-03 10:46:07
问题 I am trying to match hosts using a regex pattern with ansible but it is not working as expected. My inventory is as seen below: [group1] hello1 world1 hello2 world2 [group2] hello3 And my task is: - debug: msg: "{{ item }}" with_inventory_hostnames: - ~hello* From their documentation: Using regexes in patterns You can specify a pattern as a regular expression by starting the pattern with ~: ~(web|db).*\.example\.com When I execute the task there is no output. I am a n00b with regex so could

Where do you target your hosts, in Rundeck or Ansible? [closed]

旧巷老猫 提交于 2020-03-03 09:21:50
问题 Closed . This question needs details or clarity. It is not currently accepting answers. Want to improve this question? Add details and clarify the problem by editing this post. Closed 18 days ago . My question is when running a ansible playbook from Rundeck where do i set what hosts get targeted? In the Rundeck job/ workflow or ansible playbook? 回答1: To use Ansible inventory you need to add a new Ansible node source. Take a look at this. Especially the step 3. Adding the Ansible node source