ansible-归档文件,带有日期文件名,按归档日期

时间:2018-12-05 21:28:43

标签: date ansible archive

我想使用Ansible按日期将所有文件(名称中包含日期)存储在同一文件夹中的同一文件中。

让我解释一下:

文件可以是以下类型: (注意日期可以用短划线或下划线分隔)

<?php 
global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM $wpdb->users" );
?>
<form method="post">
<table>
  <tr>
    <th>ID</th>
    <th>Nombre</th>
    <th>Nobility</th>
    <th>Select Nobility</th>
    <th>Submit</th>
  </tr>
<?php 
foreach ($results as $key ) {
  echo "<tr>";
  foreach ($key as $row=>$value ) {

    if ($row == "ID" ) {
      echo "<td>$value</td>";
    }elseif ($row == "display_name") {
      echo "<td>$value</td>";
    }elseif ($row == "mg_nobility") {
      echo "<td>$value</td>
      <td>
       <select name='nobility_value'>
        <option value='nobilityOne'>nobility One</option>
        <option value='nobilityTwo'>nobility Two</option>
        <option value='nobilityThree'>nobility Three</option>
        <option value='nobilityFour'>nobility Four</option>
       </select>
      </td> 
      <td><button type='submit' name='submit'>Submit</button></td>";
    }
  }
  echo "</tr>"; 
}?>
</form>
<?php
if(isset($_POST["submit"])){
   $nobility = $_POST['nobility_value'];
  # wordpress query....
}
?>

我想要包含ansible的归档文件,其中包含这样的日期:

array(6) { 
 [0]=> object(stdClass)#3359 (11) { 
       ["ID"]=> string(1) "1"  
       ["user_login"]=> string(9) "Daniel" 
       ["user_pass"]=> string(34)"$P$Bph9BrPkxjPzgAGhjv0" 
       ["user_nicename"]=> string(9) "daniel" 
       ["user_email"]=> string(14) "declst@gmail" 
       ["user_url"]=> string(0) ...........etc...}
       } 
[1]=> object(stdClass)#3360 (11) {
       ["ID"]=> string(1) "6" 
       ["user_login"]=> string(9) "dwa3" 
       ["user_pass"]=> string(34) "$P$Bi9upVUk.dxZ7wkK83mbcU."
       .......etc.....} 

目前我搜索文件:

/app/logs/app.log
/app/logs/app.log.2018-12-04
/app/logs/app.log.2018-12-05
/app/logs/batch.log
/app/logs/batch.log.2018-12-04
/app/logs/batch.log.2018-12-05
/app/logs/web.log
/app/logs/web.log.2018_12_04
/app/logs/web.log.2018_12_05

我尝试建立新词典:

/app/logs/20181204.tar.gz
/app/logs/20181205.tar.gz

存档我的文件,但是我的var文件仅包含一个文件

- name: Search files
  find:
    paths: "/app/logs/"
  register: files

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

  

存档我的文件,但是我的var文件仅包含一个文件

那是因为要将变量file设置为单个值:

- set_fact:
  file:
    - "name": "{{ item.path | basename | regex_replace( '[A-Z-_.a-z]' , '') }}"
      "path": [ "{{ item.path }}" ]
  loop: "{{ files.files }}"
  when: item.path | basename | regex_replace( '[A-Z-_.a-z]' , '') != ''

仅将set_fact置于循环中并不会改变以下事实: 将file设置为单个值{{ item.path | basename | regex_replace( '[A-Z-_.a-z]' , '') }}

如果要将set_fact任务的结果作为列表,则需要 建立清单。这样的事情可能会起作用:

- set_fact:
    files_list: "{{
      (files_list|default([])) +
      [{
      'name': item.path | basename | regex_replace( '[A-Z-_.a-z]' , ''),
      'path': item.path
      }]
      }}"
    loop: "{{ files.files }}"
    when: item.path | basename | regex_replace( '[A-Z-_.a-z]' , '') != ''

这将通过附加一个创建files_list列表变量 loop的每次迭代都需要字典。

答案 1 :(得分:0)

最后,我只需要第二个列表files_list

return True

感谢Larsks,第二个列表是您的:)