0.0.16 • Published 3 years ago

@cnunciato/pulumi-miniflux v0.0.16

Weekly downloads
-
License
-
Repository
-
Last release
3 years ago

miniflux

A multi-language Pulumi component for Miniflux, the excellent open-source RSS server. This component deploys a containerized Miniflux service to the AWS cloud using AWS Fargate and Amazon RDS.

Usage

To use this component, you'll need:

  • An AWS account, with credentials (AWS_ACCESS_KEY_ID, etc.) properly set.
  • A relatively recent (>= 3.3.1) version of Pulumi installed
  • Node.js, of course

Create a new Pulumi project

$ pulumi new typescript

Install this package and its associated plugin

The plugin is currently hosted on AWS.

$ npm install --save @cnunciato/miniflux
$ pulumi plugin install resource miniflux 0.0.16 \
    --server http://cnunciato-pulumi-components.s3-website-us-west-2.amazonaws.com

Provide passwords for the Miniflux admin and database users

$ pulumi config set --secret adminPassword "some-secret-password"
$ pulumi config set --secret dbPassword "some-other-secret-password"

Write the Pulumi program

Here's a complete example. In index.ts:

import * as pulumi from "@pulumi/pulumi";
import * as miniflux from "@cnunciato/miniflux";

const config = new pulumi.Config();
const adminPassword = config.requireSecret("adminPassword");
const dbPassword = config.requireSecret("adminPassword");

const service = new miniflux.MinifluxService("service", {
    adminPassword,
    dbPassword,
});

export const endpoint = pulumi.interpolate`http://${service.endpoint}`;

Deploy with Pulumi!

$ pulumi up

...
Updating (dev)

...
     Type                                           Name                 Status
 +   pulumi:pulumi:Stack                            miniflux-typescript  created
 +   └─ miniflux:service:MinifluxService            service              created
 +      ├─ aws:cloudwatch:LogGroup                  logGroup             created
 +      ├─ aws:iam:Role                             taskRole             created
 +      ├─ aws:ecs:Cluster                          cluster              created
 +      ├─ aws:ec2:SecurityGroup                    dbSecurityGroup      created
 +      ├─ aws:rds:SubnetGroup                      dbsubnets            created
 +      ├─ aws:ec2:SecurityGroup                    webSecurityGroup     created
 +      ├─ aws:elasticloadbalancingv2:TargetGroup   targetGroup          created
 +      ├─ aws:iam:RolePolicyAttachment             taskRolePolicy       created
 +      ├─ aws:rds:Instance                         db                   created
 +      ├─ aws:elasticloadbalancingv2:LoadBalancer  loadBalancer         created
 +      ├─ aws:elasticloadbalancingv2:Listener      webListener          created
 +      ├─ aws:ecs:TaskDefinition                   taskDefinition       created
 +      └─ aws:ecs:Service                          fargateService       created

Resources:
    + 15 created

Duration: 3m13s