2016-09-16 108 views
0

我有下面的.sh代码需要转换为Ansible任务。使用Ansible调用Perl脚本

#!/bin/sh 
echo "Installing Sonar" 
SONAR_HOME=/tui/hybris/sonar 
if [ ! -d "$SONAR_HOME" ]; then 
mkdir -p $SONAR_HOME 
fi 
cd $SONAR_HOME 
wget https://s3-eu-west-1.amazonaws.com/tuiuk/source/sonarqube/sonarqube-5.4.zip 
unzip sonarqube-5.4.zip 
echo "Modifying Sonar config file" 
cd sonarqube-5.4/conf 
perl -p -i -e 's/#sonar.jdbc.username=/sonar.jdbc.username=sonar/g' sonar.properties 
perl -p -i -e 's/#sonar.jdbc.password=/sonar.jdbc.password=sonar/g' sonar.properties 
perl -p -i -e 's/#sonar.jdbc.url=jdbc:mysql/sonar.jdbc.url=jdbc:mysql/g' sonar.properties 
cd $SONAR_HOME 
echo "downloading and copying plugins" 
wget https://s3-eu-west-1.amazonaws.com/tuiuk/source/sonarqube/sonarqube5.4_plugins.zip 
unzip sonarqube5.4_plugins.zip 
cp plugins/* sonarqube-5.4/extensions/plugins/ 
cd sonarqube-5.4/bin/linux-x86-64 
echo "Starting Sonar" 
./sonar.sh start 

下面是我的任务。我被困在需要执行perl脚本的地方。你们中的任何一个人能否帮助我进一步处理?

- hosts: docker_test 
    tasks: 
    - name: Creates directory 
    file: path=/tui/hybris/sonar state=directory mode=0777 
    sudo: yes 

    - name: Installing Sonar 
    get_url: 
     url: "https://s3-eu-west-1.amazonaws.com/tuiuk/source/sonarqube/sonarqube-5.4.zip" 
     dest: "/tui/hybris/sonar/sonarqube-5.4.zip" 
    register: get_solr 

    - debug: 
     msg: "solr was downloaded" 
    when: get_solr|changed 

    - name: Unzip SonarQube 
    unarchive: src=/tui/hybris/sonar/sonarqube-5.4.zip dest=/tui/hybris/sonar copy=no 

回答

2

我敢打赌,你不需要perl的位置,使用lineinfileregex选项(如果你需要修改文件中的单个线)或replace模块(如果你需要修改所有实例)。

0

只需拨打Perl,以commandshell - 模:

- task: Modifying Sonar config file shell: cd sonarqube-5.4/conf && perl -p -i -e ...