2015-11-15 44 views
0

第一次使用Ansible。我有一個在Ubuntu Trusty和Nginx/MySQL上設置wordpress的劇本。Ansible Ubuntu安裝 - 將wordpress tar.gz展開到/ var/www的根目錄

我想獲取wordpress.latest.tar.gz的提取作爲根www文件夾的一部分。所以,我要的是:

/var/www 
    - wp-admin 
    - wp-content 
    - wp-includes 

當我點提取命令/var/www我得到:

ok: [XXX.XX.XX.XXX] => {"changed": false, "msg": "skipped, since /var/www exists"} 

當我把它指向var/www/wordpress(不存在),它的工作原理,並創建文件夾。

我的任務語法(即工作,但在自己的文件夾放在WordPress的)是:

- name: "Extract archive" 
    sudo: yes 
    unarchive: "src=/srv/wordpress.latest.tar.gz 
       dest=/var/www copy=no 
       owner=www-data 
       group=www-data 
       creates=/var/www/wordpress" 

我曾嘗試下面的語法,但它跳過按照上述應將描述的提取。

- name: "Extract archive" 
    sudo: yes 
    unarchive: "src=/srv/wordpress.latest.tar.gz 
       dest=/var/www copy=no 
       owner=www-data 
       group=www-data 
       creates=/var/www" 

我誤解了什麼?謝謝!

回答

1

有一些注意事項,我纔回答:

  • 我與工具沒有經驗,你提
  • 可選的解決方案,下面應該算是一個解決辦法,這顯然不是一個直接的解決您的問題
  • 他們取決於你在命令行的信心和事實上你有權訪問它(因爲這是一個Ubuntu安裝,我猜這是你自己的盒子)。

實驗

但首先,讓我們給別的東西一展身手。這個選項不使用任何終端,只能使用你擁有的工具,但我會在另一個目錄中執行,以確保你不會搞砸。

我想如果你刪除creates=/var/www它可能適合你。它可能失敗的原因是因爲目錄已經存在,所以它試圖保證你的安全。既然你已經指定了目的地目錄,那就去吧。

要測試它,您可以先在/var/www下創建一個臨時目錄,以便您存在以下路徑:/var/www/temp123

然後用下列選項創建您的劇本:

- name: "Extract archive" 
    sudo: yes 
    unarchive: "src=/srv/wordpress.latest.tar.gz 
       dest=/var/www/temp123 copy=no 
       owner=www-data 
       group=www-data 
       creates=/var/www/temp123" 

如果你得到同樣的錯誤,我們正在軌道上。

現在重新而不creates「玩」的劇本(雙關語意),因此它看起來像這樣:

- name: "Extract archive" 
    sudo: yes 
    unarchive: "src=/srv/wordpress.latest.tar.gz 
       dest=/var/www/temp123 copy=no 
       owner=www-data 
       group=www-data" 

如果按預期工作,繼續前進,現在除去dest: temp播放選項。

你的最後的戲劇應該是這樣的:

- name: "Extract archive" 
    sudo: yes 
    unarchive: "src=/srv/wordpress.latest.tar.gz 
       dest=/var/www copy=no 
       owner=www-data 
       group=www-data" 

我希望這有助於

不要忘記刪除所有臨時工作,爲你。

如果沒有工作,你總是可以只是嘗試做自己:

選項1:在一個子目錄中創建和移動它

  • 安裝它,你會在subdirectory-定義/ var下一個不同目錄名/網絡/ {yourTempDirNameWithoutCurlyBraces}
  • 在終端和在該臨時目錄:

    mv * ..

  • 你便可以刪除該目錄

方案2:通過命令行

安裝它,如果你在服務器上的文件已經,變成你的/var/www目錄:

tar -xzvpf /srv/wordpress.latest.tar.gz 
    x - extract 
    z - uncompress 
    v - verbose (see the ouput—this flag is optional) 
    p - preserve file permissions (see note) 
    f - the file we're extracting 

note: I'm not sure what file permissions will be inside the archive 
     but I would expect they're set for the webserver already. 
     If they're not, you could always issue: 

chown -R www-data:www-data /var/www/ 

買者重返:d

在沒有這裏已經有了一個直接的答案,我只是發佈這個讓你走上正軌。再次,我沒有使用Ansible或熟悉它。但是,如果你想要脫離並且一展身手,那麼自己安裝WordPress並不是一件困難的事情。雖然我不知道Ansible提供的自動化程度,但是如果這樣做會對您的事業道歉,但這不會對您的事業產生任何影響

祝您好運。

0

這也許對你會有所幫助:

- name: Download the latest wordpress 
    get_url: url={{ wordpress_url }} dest={{ wordpress_dir }}/latest.tar.gz 

- name: Unzip the downloaded wordpress zipped file 
    unarchive: src={{ wordpress_dir }}/latest.tar.gz dest={{ wordpress_dir }} copy=no 

- name: Rename the extracted wordpress directory as Website name 
    command: mv {{ wordpress_dir }}/wordpress {{ wordpress_dir }}/{{ website_name }} 

而且var文件是這樣的:

--- 
website_name: test.com 
wordpress_dir: /var/www 
wordpress_url: http://wordpress.org/latest.tar.gz 

有關完整參考,請查閱以下link,感謝

相關問題