标签: Ansible
ansible-playbookansible-awx
我计划实现一个新的Ansible模块,它将通过本地连接运行,并对主机进行远程API调用。是否有任何方式可以从模块访问主机名/IP地址?我想在此基础上决定使用哪种API。我假设您的操作类似于从跳转主机在网络设备上操作
现在我不知道Ansible module基类中的inventory_主机在哪里,但在这种情况下我经常做的是:
ansible_connection: local
tasks:
- name: config net app
myconfig: action=create_
在最简单的示例中,设置环境就像下面设置http_代理一样,请参见
在我的例子中,我需要在system shell中使用这个http\U代理,而我想在playbook中禁用它,我该如何实现呢
如果我在shell中工作,我可以使用unset http\u proxy您的游戏就可以做到这一点:只为该任务设置环境,任何后续任务都不会设置变量
例如:
- hosts: all
tasks:
- apt: name=cobbler state=installed
environment:
鉴于这一库存:
[webservers]
10.0.0.51 private_ip='X.X.X.X'
10.0.0.52 private_ip='Y.Y.Y.Y'
10.0.0.53 private_ip='Z.Z.Z.Z'
如何获取Web服务器的私有IP列表
webservers_private_ips: "{{ }}" # ['X.X.X.X', 'Y.Y.Y.Y', 'Z.Z.Z.Z']
我知道组['webserver']会给我这个列表['10.0.0.51','10
我有一本列出了角色的ansible剧本。其中一个角色有一个标签,它是ansible galaxy角色。我用ansible galaxy安装了它
剧本部分:
roles:
... roles here
- {name: httplab.ffmpeg, tags: ffmpeg}
在playbook跑步中我得到
ERROR: expected a role name in dictionary: {'name': 'httplab.ffmpeg', 'tags': 'ffmpeg'}
标签: Ansible
rolesansible-playbooklimits
我有一个hosts文件,指定属于多个组的服务器:
[web]
192.168.45.37
[integration]
192.168.45.37
[database]
192.168.45.37
在剧本中,不同的小组有不同的角色:
- hosts: all
roles:
- { role: base, tags: ['base'] }
- { role: logstash, tags: ['logstash'] }
- hosts: database
roles:
有人知道如何在RHEL机器上使用sx su模拟来执行剧本吗
Ansible只提供现成的sudo,但我们不能使用sudo,因为我们使用的是Boks ssh。
有人知道如何解决这个问题吗?Ansible特权升级记录如下:
它提到你不能组合方法。实际上你可以!
Ansible.cfg有一个flash,您可以使用sx su作为一种变成方法您能否分享boks配置(sx su-)的外观,我仍然无法理解。以及如何为用户提供密码
在设置新的Linux服务器时,我通常会运行apt get update,然后运行apt get upgrade。第一个命令更新可用软件包及其版本的列表,但不安装或升级任何软件包。第二个命令实际上安装了我拥有的软件包的更新版本
在Ansible中,正确的方法是什么?你可以这样做:
- name: update and upgrade apt packages
apt: >
upgrade=yes
update_cache=yes
cache_valid_time=
我有剧本,其中包括。还有var_提示符“name_VM”,我需要include playbook“new VM.yml”中的transfer变量,但我有错误:
任务[主机名]
****************************************************************致命:[192.168.250.102]:失败!=>{“failed”:true,“msg”:“the
字段“args”的值无效,似乎包含变量
这是未定义的。错误是:{{name\u VM}:'n
我正在写一本ansible的剧本,升级Kubernetes在《奴才》上的版本
- name: Configure and start the Kubernetes Nodes
hosts: kubernetes-minions
serial: 1
tasks:
- name: backup K8S master files.
shell: "{{item}}"
with_items:
- cp /etc/kubernetes/config
我是个新手,我现在正在做的就是扮演这个角色
更多站点.yml
---
- hosts: user1_checkserverlist
user: user1
roles:
- { role: speed_manager, DNAME: "/u" }
- hosts: oracle_checkserverlist
user: oracle
roles:
- { role: speed_manager, DNAME: "/tmp" }
速度更快\u管理器/defa
我想使用Ansible以sudo-u用户名运行特定命令
我尝试了下面的任务,但面临权限问题
---
-
hosts: all
become: yes
vars_files:
- vars.yml
tasks:
- name: "Create solr cores"
shell: /opt/apps/solr/bin/solr create -c test10
become_flags: '-u solr'
register:
我觉得这应该是非常直截了当的,但我已经在这里倾诉了ansible文档和其他答案,我被卡住了
我要做的是使用ansible composer对象在composer require语句中设置要使用的composer包数组或列表
因此,我有一个这样的事实来定义模块:
- name: Define modules to be required
set_fact:
modules:
- vendor1/package1
- vendor2/package2
我试图执行现有ansible playbook,但出现以下错误:
fatal: [default]: FAILED! => {"failed": true, "msg": "ERROR! 'unicode object' has no attribute 'regexp'"}
执行ansible剧本的这一部分时:
- name: "Add access to pg_hba.conf for DB users"
become: yes
become_user: postgres
我有一份由另一个流程开始的可靠工作。现在我需要检查Ansible Tower中当前正在运行的作业的状态。我能够使用Rest API跟踪状态是否为正在运行/成功/失败/取消,作业Id为]但是我还需要任务的控制台日志/输出的信息来进行处理。有没有针对同一个模板的直接API?一旦启动模板,您就会得到作业id作为响应,但我认为没有API来获取作业的输出。但是,您可以从“作业”部分下的仪表板下载单个作业输出。您可以通过类似以下内容的链接访问作业日志:
https://tower.yourcompany.c
我有一本剧本,比如:
myplaybook.yml
---
- name: call another playbook
hosts: 127.0.0.1
- include: "{{name}}-playbook.yml"
when: name is defined
这里,我将cli中的'name'变量作为--extra-vars传递
它工作得很好。但是,当尝试使用下面的命令检查语法时,其给出的错误是名称未定义
Ansible-playbook --syntax myplaybook
我正在使用ansible创建一个剧本,以根据提示参数安装我的项目
我可以用这个脚本安装2个应用程序,我在开始时会提示其中一个,然后我需要获得良好的ssh端口,因为应用程序有不同的端口
ssh_smx_ports:
- pds: 8103
- activemq: 8102
启动脚本时:
vars_prompt:
- name: "type_smx"
prompt: "cible? (pds,activemq)"
private: no
需要创建后,请将此端口传递给另一个命令:
我正试图用下面的剧本卸载文件系统
vars:
unmountlist:
- "/DATA1"
- "/DATA2"
tasks:
- name: unmount
mount:
path: "{{ item }}"
state: unmounted
with_items:
- "{{ unmountlist }}"
register: output
ignore_errors: true
- debug:
msg
我必须使用Ansible Playbook在远程服务器上执行“top”命令。
但是当我运行剧本时,转会没有成功
剧本:
---
- name: CPU load
hosts: all
become: yes
gather_facts: false
tasks:
- name: CPU load
command: top
register: cpu_result
- debug:
var: cpu_result.changed
p.S.“mp
我试图理解我在一个不完整的Ansible角色中发现的变量引用。角色使用引用值
dest: “{{params['box'].t1}}”
在另一个yaml文件中,我有
box:
t1: "Albany"
t2: "Albuquerque"
params没有定义,所以很明显这是行不通的,但我无法找到定义它的正确方法有人能告诉我必须在何处(或如何)定义参数才能在Ansible中使用此变量引用吗?
相关问题。在dest:“{{params['box'].t1}}”中使用方括号是否表
我希望playbook与列表中的每个项目一起运行一次,而不是同时运行列表中的所有项目
Ansible版本:2.6.1
Tasks.yaml:
---
- name: Task 1
debug:
msg: "Message 1: {{ item }}"
with_items: "{{ messages }}"
- name: Task 2
debug:
msg: "Message 2: {{ item }}"
with_items: "{{ messages
ansible剧本中经常出现的一个主题是,我经常必须以sudo权限执行命令(sudo:yes),因为我想为某个用户执行命令。理想情况下,我更愿意使用sudo切换到该用户并正常执行命令。因为这样我就不必执行我通常的post命令清理,比如chowning目录。以下是我的一本剧本中的一个片段:
- name: checkout repo
git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
sudo:
我一直在做一个游戏来创建一个虚拟服务器,并通过向用户询问一些问题来收集配置需求
我想运行一些预检查以显示某些虚拟服务器属性存在,我已经能够计算出除概要文件之外的所有属性
运行“list ltm profile”时,需要指定协议,然后指定配置文件名称,例如“list ltm profile tcp”。检查一个LTM配置文件是可以的,但我遇到的困难是当您需要检查多个配置文件时
是否有一种方法可以循环我的问题并将用户输入传递到检查中?假设用户希望检查以下配置文件:
list ltm profile h
错误!加载YAML时出现语法错误。
未找到所需的密钥
错误似乎出现在“/etc/ansible/main.yml”中:第73行第50列,但可能是
根据确切的语法问题,在文件中的其他位置
令人不快的一行似乎是:
- name: Ensure IP forwarding is disabled
shell: "sysctl net.ipv4.ip_forward ; grep "net\.ipv4\.ip_forward" /etc/sysctl.conf /etc/sysctl.d/*"
我希望将日期输入变量转换为历元。没有看到ansible函数来帮助我解决这个问题
例如:
日期是一个格式变量:%m/%d/%Y%H:%m:%S,需要将其转换为历元秒。Ansible有一个to_datetime过滤器,已记录。该页面包括以下示例:
使用此筛选器,您可以将日期转换为字符串转换为unix历元时间,如下所示:
- debug:
msg: "{{ ('2019-05-06 15:50:00'|to_datetime).strftime('%s') }}"
这将产生:
TASK [d
我有disable_root角色,它创建管理员用户并禁用root用户通过ssh连接到服务器。
当我第二次使用这个角色重新运行playbook时,我得到了一个无法访问的错误,这是可以的,因为我刚刚禁用了它
在这种情况下,我想跳过这个角色,继续使用其他将作为管理员用户运行的角色。我该怎么做
这是我的剧本disbale\u root使用ansible\u用户:root var
如果需要,一个playbook应以root用户身份连接到远程主机,如果已经创建了此用户,则应以admin用户身份连接到远程主机
我刚开始学习Ansible,在同一本书中找不到任何讨论使用角色和apt的文档。我写的剧本在这里
---
- hosts: apps
become: yes
tasks:
- name: Install distutils
apt:
name: python3-distutils
state: present
- name: Run roles
roles:
- geerlingguy.git
我是Ansible的新手,正在努力学习基础知识。但是很明显,我在建立库存文件方面已经失败了
对于设置:
1) 通过自制安装ansible
2) 由于没有创建ansible.cfg,我在/etc/ansible/ansible.cfg中手动创建了一个
ansible.cfg
[defaults]
inventory = /etc/ansible/hosts/;
3) 那里也没有hosts文件,所以我在/etc/ansible/hosts中创建了相同的文件
主机
Test1
Test2
当我运行
我正在尝试查找日志文件“ansible.log”的默认最大文件大小。配置文件仅解释其logrotate,因此生成的最大文件数和这些文件的最大大小是多少。或者它只是一个文件,在特定的大小之后进行日志旋转。Ansible使用Python模块,它不考虑日志旋转。可以在Python中使用,但只有2个Ansible模块使用Python模块
(grep git回购)
并且没有模块使用
但是,配置旋转并不难。例如,从角色的角度来看
$ grep -ri logging.handlers /devel/ans
我创建了一个自定义模块pingtest,它使用ping命令ping所有服务器。我已经为它创建了一个shell脚本,后来将它放在playbook目录的library目录中。当我写了一本使用该模块的剧本时,它给了我一个错误,说
致命:[ansibleclient]:失败!=>{“msg”:“模块(pingtest)缺少解释器行”}”
我试图更改IP地址,但似乎没有任何效果,我正在使用ansible 2.7.9版
ping测试模块
#/bin/bash /bin/sh
source $1 >/
我正在尝试使用ansible为MYSQL数据库设置根密码。我使用的是debconf,但是,它错误地告诉我:
Failed to find required executable debconf-show in paths: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
我的yaml文件包含:
- name: set root password
become: yes
debconf:
name: 'mysql-server'
我使用以下命令安装了ansible
sudo apt-add-repository ppa:ansible/ansible
sudo apt update
sudo apt install ansible
我跟着这个。通过使用它,我创建了一个名为test.yml的yml文件(代码如下所示)
然后我运行ansible playbook./test.yml。我得到以下错误
我不知道我错过了什么。任何想法都值得赞赏。非常感谢你
sato:~/play_around_with_ansible$ ans
可以使用来宾操作系统自定义规范从模板创建vm?
我在ansible中使用vmware_来宾模块
我在vmware中的自定义规范:
这是不可能发生的,api wmware没有来宾操作系统自定义,但您可以修改每个步骤自定义,如VLAN、主机名、加入域等
有没有什么好方法可以使用Ansible Galaxy来安装和启用Ansible(2.7.9)定制模块
我的要求允许Ansible Galaxy下载嵌入自定义模块的正确Ansible角色。一旦ansible galaxy安装--roles路径ansible/roles/-r roles/requirements.yml,我将得到以下结构(非详尽):
通过查看这部分文档,我的模块似乎位于正确的位置,不需要任何进一步的配置:
但当我发现这部分文档时,我感到困惑。ANSIBLE\u库是否与自定义模块相关
我想比较两个列表——一个是所有可用选项,另一个是要选择的特定选项。
例如,我有两个列表:
FullList:
- name: "Test1"
value1: "blabla123"
value2: "someothervalue"
- name: "Test2"
value1: "blsdfsdfasfabla"
value2: "someothervalue"
- name: "Test3"
value1: "sdjfbhsadbfv"
我使用以下ansible语句创建了RabbitMQ用户
- name: Add RabbitMQ user
shell: systemctl start rabbitmq-server.service && rabbitmq-plugins enable rabbitmq_management && /sbin/rabbitmqctl add_user mqadmin <password> && rabbitmqctl set_us
标签:elasticsearch Ansible
autoscalingansible-inventoryansible-tower
我正在尝试使用官方的Elastic Ansible角色Elastic.Elasticsearch在Ansible上配置Elasticsearch群集。我为我的AWS实例设置了Ansible tower和动态清单。我标记了我的实例,并将它们全部分组到tag_Group_Elasticsearch中。以下是Ansible代码:
hosts: tag_Group_Elasticsearch
roles:
- role: elastic.elasticsearch
vars:
当使用Ansible Playbook运行调试模式时,我可以清楚地看到其中一个返回值是“invocation”,但我很难从Playbook中获取它。“register:xyz”只允许您从返回值中获取“msg,status failed,changed”(至少在我使用的任务-proxmox_kvm中是这样)。有没有一种方法可以访问它们的其余部分
我的代码:
---
- hosts: pve
become: yes
vars:
passwd: !vault |
我想运行一组原始命令(安装python),如果给定
目标主机上的操作系统是OpenBSD
我必须将这些检查作为pre_任务运行(因为要将任何东西作为任务运行,目标系统上必须已经存在Python)
我不了解的是,在任务前阶段(如ansible_OS_系列)是否有任何OS特征变量可用
-name:检查Python
raw:test-e/usr/bin/python
更改时间:false
当:false时失败
寄存器:check_python
-名称:在OpenBSD上安装Python
#原始:tes
我想在systemd服务上启动一个服务,但我有一个错误,我不知道如何解决它
- name: Start service
systemd:
name: "{{ item }}"
state: started
enabled: yes
daemon_reload: yes
with_items:
- a.service
我有一个错误:
失败:[host](item=a.service)=>{“ansible\u loop\u va
要使用分子测试ansible角色,我需要--parallel选项。我的molecular.yml如下所示:
---
dependency:
name: galaxy
driver:
name: docker
lint: |
set -e
yamllint -c molecule/yaml-lint.yml .
ansible-lint
flake8
platforms:
- name: instance
image: "geerlingguy/doc
我正在尝试安装一些RPM,只有在定义了变量之后。
但即使定义了变量,我也会收到跳过消息。
我尝试了三种不同的条件,所有条件都被跳过了
我的任务是:
- name: Install elasticsearch packages
package: name={{ package.item }} state=installed
when: ansible_distribution == item.when
with_items:
- { package: "logstas
我正在创建一个Oracle RAC设置,其中包含2个虚拟机和两个虚拟机之间共享的一组6个磁盘
流浪汉档案在这里-
# encoding: utf-8
# -*- mode: ruby -*-
# vi: set ft=ruby :
# -- define the number of nodes to spin --
N=2
cname="laxrac"
Vagrant.configure("2") do |config|
#Iterate ove
我正在尝试通过Ansible安装,但运气不太好。接下来,我似乎应该首先确保设置NVS\u HOME环境变量,然后克隆repo,然后运行安装程序
因此,以下是我在剧本中的设置:
-主机:所有
远程用户:“{{新用户}}”
收集事实:真实
环境:
NVS\u主页:~/.NVS
任务:
-名称:查看是否已安装NVS
线条填充:
路径:~/.zshrc
行:导出NVS_HOME=“$HOME/.NVS”
国家:现在
检查模式:true
注册号码:zshrc
-名称:克隆NVS回购协议
吉特:
回购:ht
目前我正在寻找一个解决方案,在那里我可以创建一个变量,然后导入带有该变量的剧本
这是我的密码:
- name: test
hosts: localhost
vars:
ansible_python_interpreter: /usr/bin/python3
playbook1: server_provision
playbook2: server_provision_oracle
gather_facts: no
tasks:
- name: defi
我一直在寻找解决方案,到目前为止似乎没有一个有效
我将任务输出注册为:
“操作列表.启动工件”:[
{
“account-troubletree-v1-1-0-18-21001”:"docker run-d-p 21001:8080-v/apps/projects/logs/account-troubletree-v1-0-18-21001:/logs-v/apps/projects/logs/account-troubletree-v1-1-0-18-21001/.configmap:/tib
如何修复以下playbook,以接受文件模式作为额外变量,并删除具有比给定天数更早的匹配文件模式的文件
---
- hosts: destination_servers
vars:
file_pattern: "{{ file_name }}"
tasks:
- name: Find all files older than {{ age }} days
find:
path: '{{ dir }}'
file_type: fi
我编写了一个角色来运行reactos应用程序。当单个任务出现问题时,确保停止Nginx。我犯了一个奇怪的错误
如果我从角色中删除此点,应用程序将成功关闭,但我希望它也能使用它
以前的任务效果很好
- name: Ensure nginx is not installed
apt:
name: nginx
state: absent
但这不起作用
- name: Ensure that Nginx is stopped
ansible.builtin.systemd:
我现在正在研究简单防火墙,它只是iptables规则的分组列表。对于配置,我使用字典列表,根据模板生成文件
firewall_v4_input:
- { group: "haproxy", rule: "-p tcp -m multiport --dport 80,443 -j ACCEPT" }
firewall_v4_output:
- { group: "haproxy", rule: "-p tcp
标签: Ansible
ansible-awxansible-tower
我目前正在使用ansible awx,并尝试为elasticseach群集创建滚动升级工作流作业。
我有一个模板工作流,理想情况下可以为不同的主机逐个执行其他模板工作流
目前,我在每个内部模板中都定义了一个限制,但当我运行它时,它会被一个空限制覆盖,并且基本上会为整个库存运行第一个模板
有没有办法让大模板不覆盖内部限制?我不完全确定您在这里要做什么。如果您在播放过程中完成了将服务从负载中取出、关闭、更新、重新启动和重新加载的整个过程,则可以在播放中添加serial选项,并且一次只执行少量操作。
我有下面的csv文件,没有固定的数据。想要读取每一行并使用ansible模板创建json文件吗
ABC,1,2,3
EFG,11,12,13,14,15
ZYZ,21,22,23,24,25
我正在寻找如下输出
{
"u_label": "ABC",
"u_value": "1",
"c_data": [
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 192 页