标签: devops

Kubernetes:如何运行 MySQL 命令?

在 Docker 中,我可以使用command: --default-authentication-plugin=mysql_native_passwordindocker-compose文件。在创建 MySQL 部署时如何传递它?

我正在使用 MySQL8

mysql docker kubernetes devops

3
推荐指数
1
解决办法
1155
查看次数

新 AMI 发布时由 Terraform 重新创建的 EC2 实例

我编写了一些 Terraform 代码来创建一些服务器。对于 AMI,我使用 Terraform 数据模块获取最新的 Ubuntu 16.04 映像 ID 并将其分配给 EC2 实例。

最近我想向这个环境添加另一个 EC2 实例,但是当我运行时,terraform plan我可以看到 Terraform 正在尝试删除现有的 EC2 实例并重新创建它们。原因是新的 Ubuntu 映像已发布,它正在尝试删除旧实例并使用新的 AMI ID 创建新实例。

由于我不想意外删除我们的生产服务器,我是否有机会解决这个问题?

data "aws_ami" "ubuntu" {
  most_recent = true

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }
}

module "jenkins" {
  source = "terraform-aws-modules/ec2-instance/aws"

  name           = "Jenkins"
  instance_count = 1

  ami                         = "${data.aws_ami.ubuntu.id}"
  instance_type               = "t2.small"
  associate_public_ip_address = true
  disable_api_termination     = true
  key_name …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 terraform devops amazon-ami

3
推荐指数
2
解决办法
2173
查看次数

terraform_remote_state 数据块语法

我正在使用 Terraform 进行 AWS 多账户设置。我有一个主账户,它创建了几个子账户,在子账户中我引用了主账户的远程状态来检索输出值。

terraform plan测试 main.tf 中此配置的命令失败:

terraform {
  required_version = ">= 0.12.0"

  backend "s3" {
    bucket = "bucketname"
    key    = "statekey.tfstate"
    region = "us-east-1"
  }
}

provider "aws" {
  region  = "us-east-1"
  version = "~> 2.7"
}

data "aws_region" "current" {}

data "terraform_remote_state" "common" {
  backend = "s3"
  config {
        bucket = "anotherbucket"
        key    = "master.tfstate"
  }
}
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

?  test terraform plan

Error: Unsupported block type

  on main.tf line 20, in data "terraform_remote_state" "common":
  20: …
Run Code Online (Sandbox Code Playgroud)

terraform devops infrastructure-as-code terraform0.12+

3
推荐指数
1
解决办法
1174
查看次数

使用 GitFlow 进行构建推广到底是如何工作的?

我很难理解促进构建(及其工件)的概念如何与 GitFlow 协同工作。我正在与 Git、Jenkins 和(作为新添加的)Artifactory 制定持续集成/交付工作流程。这是我迄今为止的工作:

  • 来自develop分支的构建工件将自动推送到存储dev库(如果单元测试等通过)并因此提升为dev状态。这些工件无法进一步促销。
  • 来自feature分支的工件根本不会被推送或提升。
  • 来自release分支的工件也只能被提升到dev(或者我应该引入一个release回购?)
  • 一旦release合并到 中master,新的提交就会被标记,Jenkins 就会运行完整的 CI/CD 管道。在单元测试和指标(在所有分支上运行的构建阶段)之后,工件被推送到一个masterrepo 并提升到master. 然后将工件用于部署到暂存环境,在那里可以进行最终测试(这些测试可以在完整的持续部署设置中自动化)。如果所有测试都成功,工件将被推送到一个prod仓库,部署到生产并提升到prod状态。如果在生产之前的任何阶段失败,则标签属于一个从未进入生产的版本。

我的理解正确吗?我主要对主/发布合并感到困惑。直觉上我会说,来自的二进制文件release将接受最多的测试。然而,GitFlow 规定只有在master被标记时提交(我不想标记技术上没有产生进入生产的二进制文件的提交)。如果在构建提交期间发现问题master怎么办?拥有未投入生产的标签是“错误的”吗?我是否必须恢复或撤消标签甚至合并提交?

很高兴听到其他人对此构建推广 + GitFlow 的看法。任何帮助深表感谢。

git continuous-integration artifactory jenkins devops

3
推荐指数
1
解决办法
1612
查看次数

如何为我的项目设置构建授权范围?

现在我的 NuGet 还原失败,因为项目构建用户没有对包源的贡献者访问权限。

/usr/share/dotnet/sdk/3.0.100/NuGet.targets(123,5): 错误:无法加载源 pkgs.dev.azure.com[..]index.json 的服务索引。/usr/share/dotnet/sdk/3.0.100/NuGet.targets(123,5): 错误 : 响应状态代码未表示成功:403(禁止 - 用户“xxxxxxx”缺乏完成此操作的权限。您需要有“阅读包”。

解决方案是将构建授权范围从当前项目更改为项目集合。这似乎非常可行,如下所示:

https://docs.microsoft.com/en-us/azure/devops/pipelines/build/options?view=azure-devops

但是,在 DevOps 的无数菜单中,可以在哪里设置此范围?

devops azure-devops

3
推荐指数
3
解决办法
3607
查看次数

发布标记为 verdaccio 私有的包

是否有可能发布标记为私有Verdaccio包而不删除private:truepackage.json

NPM 文档说我们也可以publishConfig用来确保包只发布到特定目录,但没有如何配置它的示例:

https://docs.npmjs.com/files/package.json#private

javascript node.js npm devops verdaccio

3
推荐指数
1
解决办法
1488
查看次数

Ansible 中的 Git 模块在 tmp 目录上获得权限被拒绝

我正在尝试使用该模块通过Ansible克隆远程存储库git。这是任务配置:

- name: Clone repo
  git:
    repo: "{{ repository }}"
    dest: "/home/{{ username }}/abc"
    key_file: "{{ git_key_file }}"
  register: code_update
Run Code Online (Sandbox Code Playgroud)

但不幸的是它失败并出现以下错误:

fatal: [xyz]: FAILED! => {"changed": false, "cmd": "/usr/bin/git clone --origin origin '' /home/xyz/abc", "msg": "Cloning into '/home/xyz/abc'...\nfatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied\nfatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied\nfatal: unable to fork", "rc": 128, "stderr": "Cloning into '/home/xyz/abc'...\nfatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied\nfatal: cannot exec '/tmp/tmpm9mfdkci': Permission denied\nfatal: unable to fork\n", "stderr_lines": ["Cloning into '/home/xyz/abc'...", "fatal: cannot …
Run Code Online (Sandbox Code Playgroud)

git ubuntu ansible devops

3
推荐指数
1
解决办法
1192
查看次数

在 helm 模板中传递多个变量

有没有办法使用 传递多个变量template或函数include?在我的例子中,我遍历了一个项目列表,但在模板中我也需要这个.Release.Name变量。

有没有办法添加到$client.Release.Name?我试过类似的东西{{ $client.Name := .Release.Name }},但它抛出了一个错误..

我有以下模板:

{{- range $client := .Values.global.clients }}
{{- with $ }}
search.service-{{ $client.clientId }}.cfg: |
{{ include "rest-api.search" $client | indent 4}}
{{- end}}
{{- end}}
Run Code Online (Sandbox Code Playgroud)

rest-api.search 函数:

{{- define "rest-api.search" -}}
client.id={{ .clientId }}
id={{ .clientId }}
uri=http://{{ .Release.Name }}:11666/{index}/ws/{configuration}
default.index=quicksearch
default.configuration=form
query.sort=
query.filter=
query.dsf=word
query.lower=0
query.max=10
query.locale=de
query.query=*
# Index mapping
index.COMMON=quicksearch
index.REF=quicksearch
supportObjectGroup=true
# authorization scheme
authScheme=NONE

{{- …
Run Code Online (Sandbox Code Playgroud)

kubernetes devops kubernetes-helm

3
推荐指数
1
解决办法
4342
查看次数

Jenkins 管道确定分支是否用于 Bitbucket 拉取请求

我将 Jenkins 与Bitbucket 分支源插件一起使用。

一切都很好,但我希望能够根据分支是否与拉取请求相关联来运行/排除管道中的某些阶段,例如:

pipeline {
  stages {
    stage('build') {
      //compile
    }    
    stage('package') {
      when {
        environment name: 'IS_PULL_REQUEST', value: 'true'
      }      
      //create deployable package
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Jenkins 知道分支何时用于 PR,因为它将源与目标合并,并且还在多分支管道页面的拉取请求文件夹中显示分支。

我可以在管道中使用环境变量来排除/包含阶段吗?

bitbucket jenkins devops jenkins-pipeline

3
推荐指数
2
解决办法
3020
查看次数

GitHub 操作:在工作流之间共享/引用作业

正如这里所讨论的,在 GitHub Actions 中有一种使用关键字引用job其他jobs 中的 s的好方法need,例如

name: Share data between jobs
on: [push]

jobs:
  job_1:
    name: Add 3 and 7
    runs-on: ubuntu-latest
    steps:
        # Steps

  job_2:
    name: Multiply by 9
    needs: job_1
    # The rest of the job
Run Code Online (Sandbox Code Playgroud)

我在文档中找不到答案的问题是:有没有办法job在其他工作流中引用/共享s?(即单独的yml文件)

我的项目由几个单独的工作流组成,每个工作流都需要执行相同的初始steps。我试图避免在不同的workflows 中复制粘贴相同的步骤。

continuous-integration github continuous-deployment devops github-actions

3
推荐指数
2
解决办法
1453
查看次数