我有一堆服务器上有四个物理驱动器(/ dev/sda,sdb,sdc和sdd).sda上安装了操作系统.
我需要格式化除sda之外的每个驱动器.我需要检查每个驱动器上是否有数据.如果是的话,我不应该格式化它.
# This will get all physical disks (sda, sdb, sdc, etc) and assign them to disk_var
- name: Get disks
set_fact: disk_var="{{hostvars[inventory_hostname]["ansible_devices"].keys()|list}}"
- name: Check if the disk is partitioned and also ignore sda
stat: path=/dev/{{item}}1
with_items: disk_var
when: item != 'sda'
register: base_secondary_partition_{{item}}
- name: Create GPT partition table
command: /sbin/parted -s /dev/{{item}} mklabel gpt
with_items: disk_var
when: item != 'sda' and base_secondary_partition_{{item}}.stat.exists == false
Run Code Online (Sandbox Code Playgroud)
格式化这些驱动器显然涉及更多步骤,但在创建GPT分区表时,它在上一个任务中失败了.
这是它运行时的样子.您将看到它在上一个任务中失败:
TASK: [role | Get disks] ******************************************************
ok: [server1.com]
TASK: …Run Code Online (Sandbox Code Playgroud) 我能够将实例ID,实例类型和公共IP地址转换为表格格式.但是我无法解析标签名称.我们为所有服务器插入名称,以便更容易识别.
这是我到目前为止所提出的一个例子
aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId,InstanceType,PublicIpAddress]' --output table
------------------------------------------------
| DescribeInstances |
+------------+-------------+-------------------+
| i-64629700| m1.small | 54.227.243.165 |
| i-2d300249| m3.xlarge | 23.23.166.230 |
| i-7422c909| m1.small | 23.21.105.175 |
| i-08c76e24| m3.xlarge | 54.235.253.163 |
| i-99a20a72| m3.medium | 23.23.184.200 |
| i-6053991b| m1.large | 54.221.250.189 |
Run Code Online (Sandbox Code Playgroud)
我不确定如何在表格中添加这样的内容
'Reservations[].Instances[].Tags[?Key==`Name`].Value[]'
Run Code Online (Sandbox Code Playgroud) 不知道为什么最后一行没有削减"从脚本:
#!/bin/bash
FILENAME=$1
while read line
do
cut -d '"' -f2
echo $line
done < $FILENAME
$ cat file
"1" test
"2" test
"3" test
"4" test
"5" test
Run Code Online (Sandbox Code Playgroud)
如果我使用以下命令运行此脚本:
$ ./test file
2
3
4
5
"1" test
Run Code Online (Sandbox Code Playgroud) 创建存储桶非常简单。
resource "aws_s3_bucket" "henrys_bucket" {
bucket = "${var.s3_bucket_name}"
acl = "private"
force_destroy = "true"
}
Run Code Online (Sandbox Code Playgroud)
最初我以为我可以为s3_bucket_name变量创建一个列表,但出现错误:
Error: bucket must be a single value, not a list
Run Code Online (Sandbox Code Playgroud)
——
variable "s3_bucket_name" {
type = "list"
default = ["prod_bucket", "stage-bucket", "qa_bucket"]
}
Run Code Online (Sandbox Code Playgroud)
如何在不重复代码的情况下创建多个存储桶?
如何使用 while read 行读取多个变量?我正在尝试从这些多行变量创建一个 csv 文件。
不确定这是否是最好的方法。
例如:
1st_list=$(..code..)
2nd_list=$(..code..)
while read line_from_1, line_from_2
do
echo "$line_from_1,$line_from_2" >> outputfile.csv
done < $1st_list,$2nd_list
Run Code Online (Sandbox Code Playgroud) 我可以从主机收集事实,并且可以查看我的驱动器。如何使用 ansible_devices 变量仅获取驱动器(sda、sdb 等)?
我正在尝试做类似的事情:
tasks:
- debug: msg={{item.mount}}
with_items: ansible_mounts
Run Code Online (Sandbox Code Playgroud)
我尝试了以下调试消息,但我能看到的唯一变量只是一个驱动器:
debug: msg={{ hostvars[inventory_hostname]["ansible_devices"] }}
Run Code Online (Sandbox Code Playgroud)
。
"ansible_devices": {
"sda": {
"holders": [],
"host": "Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 03)",
"model": "Crucial_CT480M50",
"partitions": {
"sda1": {
"sectors": "2097152",
"sectorsize": 512,
"size": "1.00 GB",
"start": "2048"
},
"sda2": {
"sectors": "8388608",
"sectorsize": 512,
"size": "4.00 GB",
"start": "2099200"
},
"sda3": {
"sectors": "927213568",
"sectorsize": 512,
"size": "442.13 GB",
"start": "10487808"
} …Run Code Online (Sandbox Code Playgroud) ansible ×2
bash ×2
amazon-ec2 ×1
amazon-s3 ×1
linux ×1
terraform ×1
variables ×1
while-loop ×1