作为一个概念证明,我正在尝试创建可能是最简单的ansible playbook:将单个文件从ansible服务器复制到服务器场.
为了完整性,ansible已正确安装.ping模块效果很好!大声笑
我的POC的剧本写道:
---
- hosts: Staging
tasks:
- name: Copy the file
copy: src=/root/Michael/file.txt dest=/tmp/file.txt
当我运行命令时......
ansible-playbook book.yml
我得到以下输出(总结)......
msg: could not find src=/root/Michael/file.txt
我读过的各种文档和网页都说文件的路径可以是绝对的,也可以是相对于剧本的.我试过两次都没有成功.
我的文件应该放在何处将其复制到目标服务器?
谢谢!
我在Windows 8下使用Cygwin(CYGWIN_NT-6.3-WOW64).我还运行Vagrant(1.7.2)和Ansible(1.8.4).要完成,我的Virtualbox是4.3.22.
已经从各自的Windows安装包安装了Cygwin和Vagrant.我在Cygwin下运行Python 2.7.8并使用'pip install ansible'来安装Ansible.
所有这些应用程序本身都可以正常工作.Cygwin工作得很好; 我整天用它作为我的贝壳,每天都没有问题.
当我在Cygwin下运行Vagrant时,Vagrant和Virtualbox也没有问题.当我在网络上的服务器上运行播放或模块时,Ansible在Cygwin下运行正常.
我遇到的问题是当我尝试使用Ansible配置本地运行的Vagrant VM时.
例如,我vagrant up是一个VM,然后起草一个简单的剧本来配置它.以下是Vagrantfile:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define :drupal1 do |config|
config.vm.box = "centos65-x86_64-updated"
config.vm.hostname = "drupal1"
config.vm.network "forwarded_port", guest: 80, host: 10080
config.vm.network :private_network, ip: "192.168.56.101"
config.vm.provider "virtualbox" do |v|
v.name = "Drupal Server 1"
v.memory = 1024
end
config.vm.provision :ansible do |ansible|
ansible.playbook = "provisioning/gather_facts.yml"
end
end
Run Code Online (Sandbox Code Playgroud)
和剧本:
---
- hosts: all
gather_facts: yes
Run Code Online (Sandbox Code Playgroud)
但是,当我运行'vagrant provision drupal1'时,我收到以下错误:
vagrant provision drupal1 ==> drupal1:正在运行的供应商:ansible ... PYTHONUNBUFFERED …
我正在尝试从HTML输出中获取如下所示的数据:
<strong>Target1NoSpaces</strong><span class="creator"> ....
<strong>Target2 With Spaces</strong><span class="creator"> ....
Run Code Online (Sandbox Code Playgroud)
我正在使用管道列车将数据削减到我想要击中的目标.到目前为止,这是我的方法:
grep "/strong" output.html | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)
grep on"/ strong"以获得目标线; 工作正常.
管道'awk'{print $ 1}'.当目标没有空格时,#1适用于#1;但当目标有空格时,#2情况下失败.只有第一个单词保留如下:
<strong>Target1NoSpaces</strong><span
<strong>Target2
Run Code Online (Sandbox Code Playgroud)
你有没有关于正确击中目标的提示,无论是在我的awk还是在不同的命令中?任何快速和肮脏的东西(grep,awk,sed,perl)都会受到赞赏.
我正在使用PowerShell从Active Directory DNS服务器提取信息,但无法获取所需的数据。
具体来说,我正在尝试获取属于特定子网的主机的名称10.104.128.x。
当我使用以下命令时:
Get-DnsServerResourceRecord-计算机名AD_DNS_SERVER-区域名104.10.in-addr.arpa -RRType Ptr | Where-Object {$ _。HostName -like'* .128'}`
我得到的输出看起来像这样:
主机名RecordType时间戳记TimeToLive RecordData -------- ---------- --------- ---------- ---------- 104.128 PTR 10/19/2015 3:00:0 ... 00:15:00 adl5c260a86ba79.XYZ.net。 11.128 PTR 2015年12月29日6:00:0 ... 00:15:00 adl3c970e8d7166.XYZ.net。 110.128 PTR 1/29/2012 11:00:0 ... 00:15:00 nroxitow7tst.ABC.com。 114.128 PTR 1/20/2012 7:00:00 AM 00:15:00 adl5c260a86c29e.ABC.com
我真正想要的是第一列(HostName),其中包含IP的最后两个八位位组;第五列(RecordData),其中包含IP分配给的主机的名称。
主机名是我真正想要/需要的数据。我在那里看到它!
因此,我使用该select命令缩减了管道系统中的输出。新命令如下所示:
Get-DnsServerResourceRecord-计算机名AD_DNS_SERVER-区域名104.10.in-addr.arpa -RRType Ptr | Where-Object {$ _。HostName -like'* .128'} | 选择主机名,记录数据
但是输出看起来像这样:
主机名RecordData -------- ---------- 104.128 DnsServerResourceRecordPtr 11.128 DnsServerResourceRecordPtr 110.128 …