迷惑メール設定では、私は仮想マシンをプロビジョニングするためにAnsibleを使用します。可能な役割:ファイル拡張子を変更する
~/bin/one.sh
~/bin/two.sh
私は最終結果がどのように見えるように、それらのファイルのシンボリックリンクを作成したい:Ansible役割の一つで
、私はフォルダ内にコピーするいくつかのファイルがタスクを持っています:
~/bin/one.sh
~/bin/two.sh
~/bin/one
(syml ~/bin/one.sh
へのインク)
~/bin/two
(~/bin/two.sh
へのシンボリックリンク)
どのように私はそれを達成することができますか?これまでのところ、私はこれを試してみましたが、それは動作しません:
- name: Common tasks =>Create symlinks for utilities
file: src=~/bin/{{ item }} dest=~/bin/ mode=755 state=link
with_fileglob:
- bin/*
私は(one.sh
のような)ファイル名を取り、拡張子を削除しdest=~/bin/
内部の正規表現を配置する必要があり(one.sh
がone
なります)が、私はどのようにそれを行うか分からない。例えば、
#!/bin/bash
folder=$1
command=`ls -1 $folder | grep .sh$`
for i in $command; do
# filename in $i
basename=`echo ${i} | gawk 'match($0, /(.*?)\.sh/, a) {print a[1]}'`
ln -s $folder/$i $folder/$basename
done
パス引数フルパスフォルダ:あなたはbashスクリプトを実行できる場合
- name: Copy common files to ~/bin
copy: src={{ item }} dest=~/bin/ mode=755
with_fileglob:
- bin/*
- name: Ensure symlinks for utilities exist
file: src=~/bin/{{ item | basename | regex_replace('(\w+(?:\.\w+)*$)', '\1') }} dest=~/bin/{{ item | basename | regex_replace('\.sh','') }} mode=755 state=link
with_fileglob:
- bin/*
@techraf質問を更新しました。 – numediaweb