sourcetip

Ansible unarchive에서 정적 폴더 수정 시간을 쓸 수 있습니까?

fileupload 2023. 3. 4. 15:08
반응형

Ansible unarchive에서 정적 폴더 수정 시간을 쓸 수 있습니까?

Ansible을 사용하여 WordPress 설치를 위한 빌드 프로세스를 작성하고 있습니다.현시점에서는 애플리케이션 레벨의 빌드 시스템이 없고, 서버 빌드 스크립트와 깔끔하게 통합할 수 있도록 Ansible을 선택했기 때문에 버튼 터치만으로 가동 중인 서버를 기동할 수 있습니다.

대부분의 WordPress 플러그인은 다음과 같이 설치됩니다.unarchivewordpress.org 의 정식 인스톨 서버에 빌드된 버전의 플러그 인을 가리킵니다.이것들 중 하나에서만 문제가 발생했는데, 그것은 파일이 완전히 같은데도 항상 "변경됨"으로 표시된다는 것입니다.

상태를 조사했습니다.ls -Rl이전과 이후에 내부 서브 디렉토리를 사용하는 플러그인은 이 플러그인(WordPress HTTPS)뿐이라는 것을 알게 되었습니다.또, 압축 해제할 때마다, 폴더의 수정 시간이 길어지고 있습니다.

이 스크립트는 프로젝트 빌드 스크립트이며,connection- 아니, 아니에요! - 왜요?local따라서 SSH를 사용하지 않는 것이 됩니다.

다음은 플레이북의 일부입니다.

- name: Install the W3 Total Cache plugin
  unarchive: >
    src=https://downloads.wordpress.org/plugin/w3-total-cache.0.9.4.1.zip
    dest=wp-content/plugins
    copy=no

- name: Install the WP DB Manager plugin
  unarchive: >
    src=https://downloads.wordpress.org/plugin/wp-dbmanager.2.78.1.zip
    dest=wp-content/plugins
    copy=no

# @todo Since this has internal sub-folders, need to work out
# how to preserve timestamps of the original folders rather than
# re-writing them, which forces Ansible to record a change of
# server state.
- name: Install the WordPress HTTPS plugin
  unarchive: >
    src=https://downloads.wordpress.org/plugin/wordpress-https.3.3.6.zip
    dest=wp-content/plugins
    copy=no

이 문제를 해결하는 한 가지 뾰족한 방법은ls -R이전 및 이후, 파일 크기를 포함하지만 타임스탬프는 포함하지 않는 옵션을 사용한 다음md5sum그 출력입니다.체크섬에 변화가 있으면 변경으로 표시할 수 있습니다.동작은 가능하지만 그다지 우아하지는 않습니다(또한 일관성을 위해 모든 플러그인에 대해 그렇게 하고 싶습니다).

또 다른 접근법은 플러그인 파일이 이미 존재하는 경우 태스크를 포기하는 것입니다만, 플러그인 버전 번호를 최신 복사본으로 범핑하면 문제가 발생합니다.

따라서 이상적으로는 다음 스위치로 제공할 스위치를 찾고 있습니다.unarchive플레이북 실행 시간이 아닌 zip 파일에서 폴더 수정 시간을 원한다고 말합니다.가능합니까?


업데이트: 댓글 작성자가 파일 내용이 변경되었을 수 있는지 물어봅니다.이 스크립트는 (1) 모든 파일 내용 및 (2) 모든 파일/디렉토리 타임스탬프에 대한 체크섬을 만듭니다.

#!/bin/bash

# Save pwd and then change dir to root location
STARTDIR=`pwd`
cd `dirname $0`/../..

# Clear collation file
echo > /tmp/wp-checksum

# List all files recursively
find wp-content/plugins/wordpress-https/ -type f | while read file
do
    #echo $file
    cat $file >> /tmp/wp-checksum
done

# Get checksum of file contents
sha1sum /tmp/wp-checksum

# Get checksum of file sizes
ls -Rl wp-content/plugins/wordpress-https/ | sha1sum

# Go back to original dir
cd $STARTDIR

플레이북의 일부로서 이것을 실행(태그를 사용해 단독으로 실행)하고, 다음의 정보를 입수했습니다.

PLAY [Set this playbook to run locally] ****************************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [jonblog : Run checksum command] ******************************************
changed: [localhost]

TASK [jonblog : debug] *********************************************************
ok: [localhost] => {
    "checksum_before.stdout_lines": [
        "374fadc4df1578f78fd60b1be6758477c2c533fa  /tmp/wp-checksum", 
        "10d66f7bdbbdd3af531d1b11a3db3059a5868838  -"
    ]
}

TASK [jonblog : Install the WordPress HTTPS plugin] ***************
changed: [localhost]

TASK [jonblog : Run checksum command] ******************************************
changed: [localhost]

TASK [jonblog : debug] *********************************************************
ok: [localhost] => {
    "checksum_after.stdout_lines": [
        "374fadc4df1578f78fd60b1be6758477c2c533fa  /tmp/wp-checksum", 
        "719c9da94b525e723b1abe188ee9f5bbaf121f3f  -"
    ]
}

PLAY RECAP *********************************************************************
localhost                  : ok=6    changed=3    unreachable=0    failed=0   

디버깅 행은 파일 내용의 체크섬해시(이것은 동일)를 반영하고 다음으로 다음 체크섬해시를 반영합니다.ls -Rl이치노이것은 디렉토리 체크섬이 변경되고 있는 것을 발견한 이전의 매뉴얼과 일치합니다.

그러면 폴더 수정 시간이 이 작업을 변경한 것으로 잘못 플래그가 표시되는 이유를 추적하려면 다음 작업을 어떻게 해야 합니까?

하는 방법을 것이 "/"를 하는 .createsunarchive★★★★★★ 。

이미 알고 계시겠지만, 이것은 Ansible에게 작업의 결과로 특정 파일/폴더가 작성된다는 것을 알려줍니다.따라서 다음 번에 해당 파일/폴더가 이미 있는 경우 해당 작업이 다시 실행되지 않습니다.

http://docs.ansible.com/ansible/unarchive_module.html#options 를 참조해 주세요.

제 해결책은 체크섬 스크립트를 수정하고 그것을 앤서블 프로세스의 영구 기능으로 만드는 것입니다.앤서블이 날 위해 체크섬을 해야 할 때 내 체크섬을 하는 건 좀 허술한 느낌이지만, 그래도 작동한다.

제가 잘못하고 있다는 것을 설명하거나 Ansible의 새로운 버전이 문제를 해결한다는 새로운 답변이 가장 환영받을 것입니다.

시간이 나면 앤서블 팀과 함께 버그 발생 가능성을 제기하겠습니다.다만, 바쁜 Tracker로 버그를 발생시킬 때, 노력 대 보상 비율이 궁금할 때가 있습니다.이미 미결 아이템이 1개 있고, 꽤 오래 기다리고 있어, 그 대처도 선택했습니다.

갱신(18개월 후)

이 앤서블 빌드 시스템은 가동되지 않았습니다.항상 뭔가에 몰두하는 것 같았어요.최근에 블로그를 다른 서버로 옮겨야겠다고 결정했을 때, 마침내 Dockerize를 했습니다.실제 WordPress 설치에서는 생각할 수 있는 놀라운 부분이 있기 때문에 이 작업에 몇 주가 걸렸지만 일반적으로 조정 도구를 사용하는 것보다 프로세스가 훨씬 더 낫다는 것을 알게 되었습니다.

언급URL : https://stackoverflow.com/questions/37646581/can-ansible-unarchive-be-made-to-write-static-folder-modification-times

반응형